>웹 프론트엔드 >JS 튜토리얼 >JavaScript는 인스턴스 속성 및 프로토타입 속성을 감지합니다_javascript 팁

JavaScript는 인스턴스 속성 및 프로토타입 속성을 감지합니다_javascript 팁

WBOY
WBOY원래의
2016-05-16 16:16:021097검색

0. 전제조건

자바스크립트 객체의 속성은 두 가지 형태로 존재합니다. 하나는 인스턴스에 있고 다른 하나는 프로토타입 객체에 있습니다.

위에 따르면 속성 감지 시 4가지 상황이 발생합니다

인스턴스 또는 프로토타입 객체에 존재하지 않습니다
인스턴스에는 존재하고, 프로토타입 객체에는 존재하지 않습니다
인스턴스에는 존재하지 않고, 프로토타입 객체에 존재합니다
인스턴스와 프로토타입 객체 모두에 존재합니다

1.hasOwnPrototype()

hasOwnPrototype()은 문자열 형식의 속성 이름을 허용하며 해당 속성이 인스턴스 자체에 존재하는 경우(케이스 2/케이스 4) 그렇지 않으면 false를 반환합니다(케이스 1/케이스 3).

코드 복사 코드는 다음과 같습니다.

functino Person() {}
Person.prototype.name = '사과';
var person1 = 새 사람();
var person2 = 새로운 사람();
person1.name = '바나나';
console.log(person1.hasOwnPrototype(이름)); //true
console.log(person2.hasOwnPrototype(이름)); //false

2.in 연산자

in 연산자는 속성이 인스턴스 자체 또는 프로토타입 객체에 있는지 여부에 관계없이 true(케이스 2/케이스 3/케이스 4)를 반환합니다. 그렇지 않으면 false(케이스 1)를 반환합니다.

코드 복사 코드는 다음과 같습니다.

console.log(person1의 '이름'); //true
console.log(person2의 '이름'); //true

3. 프로토타입 속성 존재 감지

in 연산자와 hasOwnProperty()를 결합하면 주어진 속성이 프로토타입에 존재하는지 감지하는 함수를 사용자 정의할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

function hasPrototypeProperty(객체, 이름) {
Return !object.hasOwnPrototype(name) && (객체의 이름);
}
console.log(hasPrototypeProperty(person1, '이름')) //false
console.log(hasPrototypeProperty(person2, 'name')) //true

주어진 속성이 프로토타입에 존재하는 경우 true(케이스 3)를 반환합니다. 그렇지 않으면 false(케이스 1/케이스 2/케이스 4)를 반환합니다.

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.