>  기사  >  웹 프론트엔드  >  JavaScript의 프로토타입 attribute_javascript 팁 이해하기

JavaScript의 프로토타입 attribute_javascript 팁 이해하기

WBOY
WBOY원래의
2016-05-16 17:56:18680검색

실제로 프로토타입은 단 몇 문장으로 요약할 수 있습니다.
모든 프로토타입은 객체이고, 객체에만 프로토타입이 있습니다.
오직 함수에만 프로토타입 속성이 있습니다. 이는 이 함수가 생성될 때 생성된 객체가 상속하는 프로토타입입니다. 생성자로 사용됩니다. 함수의 프로토타입은 프로토타입 속성과 아무 관련이 없습니다.
객체의 프로토타입은 비표준 속성인 __proto__ 또는 ECMAScript5 메서드 Object.getPrototypeOf()를 통해 액세스할 수 있습니다.
1번은 사실 틀렸습니다. 프로토타입 체인의 끝에 있는 객체에는 프로토타입이 없습니다. 하지만 좀 더 간단한 표현을 위해. 프로토타입 체인을 살펴보면 .toString()과 같은 정의되지 않은 메서드가 어떻게 나오는지 이해할 수 있습니다.
위에서 언급한 모호성은 문자 그대로의 이해를 바탕으로 한 것이며, 문법 자체에는 모호함이 없습니다. 프로토타입(Prototype)은 프로토타입을 의미하지만, 객체의 프로토타입은 프로토타입으로 접근할 수 없습니다.
함수에는 프로토타입 속성이 있지만 자체 프로토타입과는 아무런 관련이 없습니다. 이를 이해한 후 프로토타입 체인 및 상속에 대한 기사를 읽어보면 훨씬 더 쉽게 이해할 수 있습니다.

이해를 돕기 위한 몇 가지 예는 다음과 같습니다.

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

// 모든 객체에는 프로토타입이 있습니다.
obj = {};
console.log( obj.__proto__ )
console.log( Object.getPrototypeOf(obj) ); 🎜>console.log( obj.__proto__ === Object.getPrototypeOf(obj) );

//객체에 문법적으로 의미 있는 프로토타입 속성이 없습니다.
alert(obj.prototype) //정의되지 않음

//prototype은 속성으로서 Function에만 존재하며 이 Function에 의해 생성된 새 인스턴스와 통합된 프로토타입을 나타내며 Function 자체의 프로토타입과는 아무 관련이 없습니다.
var F = function (이름){
this.name = 이름 ;
}
obj = {a:3,
get b (){
return this.a; };
F.prototype = obj;
newObj = new F('new name');
newObj.name; //생성자로서 name은 newObj의 고유 속성입니다. //3
//obj를 상속받습니다. 다음을 통해 확인할 수 있습니다.
Object.getPrototypeOf( newObj ) === obj; // true
newObj.__proto__ === obj; //true

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