프로토타입 재해해 노트
실례에 대한 포인터 ([prototype]])
구조 함수를 호출하여 새로운 실례를 만들면 (new 키워드로 얻은 것은 하나의 대상) 실례 내부에 포인터 ([prototype]]) 를 포함하고 포인터는 구조 함수의 원형 대상을 가리킨다.
구조 함수 실례 후의 실례 대상의 바늘([[prototype]])은 접근할 수 없지만 Firefox, Safari, Chrome는 대상마다 하나의 속성
__proto__
을 지원한다.스크립트에서 이 속성은 보이지 않습니다.isPrototypeOf () 방법은 실례 지침과 구조 함수의 원형 대상 간의 관계, 그리고 한 대상이 다른 대상의 원형 체인에 있는지 확인할 수 있다.
Person.prototype.isPrototypeOf(person1);
Object.getPrototypeOf () 이 새로운 방법은 실례의 대상에 있는 바늘 ([prototype]) 이 가리키는 원형 대상을 되돌려줍니다.Object.getPrototypOf(person1) === Person.prototype;
구조 함수 속성 정보기본적으로 모든 원형 대상은 자동으로 구조 함수 (constructor) 속성을 가져옵니다.이 속성은 구조 함수를 가리키는 바늘을 포함한다.
사용자 정의 구조 함수를 만들면 원형 대상은 기본적으로constructor 속성만 얻을 수 있고, 다른 속성과 방법은 Object에 계승됩니다.
기타
실례 대상을 통해 원형의 값에 접근할 수 있으나 실례를 통해 원형의 값을 다시 쓸 수 없다.만약에 실례에 원형과 같은 이름의 속성을 추가하면 프로그램은 실례에서 이 속성을 만들고 원형의 같은 이름의 속성을 차단한다.같은 이름의 속성을null로 설정해도 방문할 때 실례에 있는 이 속성으로 원형을 가리키는 체인을 되돌려주지 않습니다.delete 속성을 사용하면 실례의 동명 속성을 삭제할 수 있습니다.
delete person1.name; // person1 name
hasOwnProperty()를 사용하여 속성이 인스턴스인지 원형인지 확인합니다.person1.hasOwnproperty('name'); //name person1
원형이 인용 유형 값의 속성을 포함하면 실례에서 이 속성을 수정하면 원형에서 반응한다.function Person() {};
Person.prototype = {
constructor: Person,
arr: ['zhang', 'wang', 'li']
};
var person1 = new Person();
var person2 = new Person();
person1.arr.push('zao');
console.log(person1.arr === person2.arr); // true
대상의 글씨체를 재는 방법으로 원형 대상을 다시 쓰기;원형 대상의 constructor 속성은 더 이상 Person을 가리키지 않습니다. constructor의 지향을 수동으로 설정해야 합니다. (현재 다시 쓴 원형 대상의 constructor 속성은 Object의 구조 함수를 가리킵니다)in조작부호, in조작부호는 대상이 어떤 속성에 접근할 수 있도록true를 되돌려줍니다. 대상이 아무리 실례적이든 원형이든.
'name' in person1; // false
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.