>  기사  >  웹 프론트엔드  >  JavaScript 프로토타입 체인 상속 방법의 사용법과 단점에 대한 자세한 설명

JavaScript 프로토타입 체인 상속 방법의 사용법과 단점에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-20 15:28:503101검색

프로토타입 체인 방법

function Person(){
     this.name = 'Simon';
}
Person.prototype.say = function(){
     alert('My name is '+this.name);
}
function F2E(id){
     this.id = id;
     this.showId = function(){
          alert('Good morning,Sir,My work number is '+this.id);
     }
}
F2E.prototype = new Person();

var simon = new F2E(9527);
simon.say();
simon.showId();
alert(simon.hasOwnProperty('id')); //检查是否为自身属性

다음으로 위의 예를 따라 다음 js 프로토타입 체인 개념을 이해하세요.

프로토타입 체인은 다음과 같이 이해될 수 있습니다. js의 각 객체에는 인스턴스화된 객체인 숨겨진 __proto__ 속성이 있습니다. __proto__ 속성 해당 클래스의 프로토타입 메서드를 가리키며 이 프로토타입 메서드는 다른 인스턴스화된 개체에 할당될 수 있습니다. 이 개체의 __proto__는 해당 클래스를 가리켜서 이전 코드인 체인을 형성해야 합니다. 열쇠. js 객체가 특정 속성을 읽으면 먼저 자체 속성을 검색합니다. 그렇지 않은 경우 프로토타입 체인에서 객체의 속성을 검색합니다. 즉 프로토타입 체인 방식을 공유할 수 있어 객체 ​​흉내와 메모리 낭비 문제를 해결할 수 있다.

단점에 대해 이야기해 보겠습니다.

프로토타입 체인 상속은 하위 클래스를 인스턴스화할 때 매개 변수를 상위 클래스에 전달할 수 없다는 것을 의미합니다. 따라서 이 예제에서는 함수 Person()에 매개 변수가 없지만 this.name="Simon"의 이유라고 직접 작성되었습니다. 다음 코드는 예상한 결과를 얻지 못합니다.

F2E.prototype = new Person()
마지막으로 제가 생각하는 상속 구현 방법을 요약해 보겠습니다. 멤버 변수는 객체 가장을 사용하고 멤버 메서드는 프로토타입 체이닝을 사용합니다.

function Person(name){
     this.name = name;
}
Person.prototype.say = function(){
     alert('My name is '+this.name);
}
function F2E(name,id){
     this.id = id;
     this.showId = function(){
          alert('Good morning,Sir,My work number is '+this.id);
     }
}
F2E.prototype = new Person();

var simon = new F2E("Simon",9527);
simon.say();
simon.showId();

 
function Person(name){
     this.name = name;
}

Person.prototype.say = function(){
     alert('My name is '+this.name);
}

function F2E(name,id){
     this.id = id;
     this.showId = function(){
          alert('Good morning,Sir,My work number is '+this.id);
     }
}

F2E.prototype = new Person();  //此处无法进行传值,this.name或者name都不行,直接写F2E.prototype = new Person('wood')是可以的,但是这样的话simon.say()就变成了My name is wood

var simon = new F2E("Simon",9527);
simon.say();  //弹出 My name is undefined
simon.showId();

위 내용은 JavaScript 프로토타입 체인 상속 방법의 사용법과 단점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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