>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 상속 구현 방법_자바스크립트 기술

자바스크립트 상속 구현 방법_자바스크립트 기술

WBOY
WBOY원래의
2016-05-16 18:47:48910검색

아래에는 일반적으로 사용되는 몇 가지 방법이 나와 있습니다.
1. 객체 가장
원리: 생성자는 모든 속성과 메서드에 값을 할당하기 위해 this 키워드를 사용합니다. , ClassA의 생성자를 classB의 메서드로 만든 다음 이를 호출하면 classB는 classA의 생성자에 정의된 속성과 메서드를 받습니다. 예:

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

function classA(name)
{
this.name=name; this.showName=function(){ 경고(this.name);}
}
function classB(이름)
{
this.newMethod = classA; ;
}
obj = new classA("hero");
objB = new classB("dby");
obj.showName(); // 영웅 인쇄
objB.showName (); // print dby 설명 classB는 classA의 메서드를 상속합니다.


객체 가장은 다중 상속을 구현할 수 있습니다. 예를 들어


code 코드는 다음과 같습니다. function classz(){
this.newMethod = classX;
this.newMethod()
delete this.newMethod;
this.newMethod=classY ;
this.newMethod():
delete this.newMethod;
}


그러나 classX와 classY가 동일한 속성이나 메서드인 경우 classY의 우선순위가 높습니다.
call() 메서드는 고전적인 개체 가장 메서드와 유사하며 이 개체로 사용됩니다. , 기타 매개변수는


코드 복사
코드는 다음과 같습니다.function sayName(perfix) { alert(perfix this.name);
}
obj= new Object()
obj.name="hero"; 🎜>sayName.call(obj,"hello," );
function classA(name)
{
this.name=name;
this.showName=function(){alert(this. name);};
function classB (이름)
{
classA.call(this,name);
}
objB = new classB("bing");
objB.showName();////설명 classB는 classA의 showName 메서드를 상속합니다.



3.apply() 메서드

apply() 메서드 2개의 매개변수가 있으며 하나는 이 객체로 사용되고 다른 하나는 매개변수 배열 함수에 전달됩니다.


코드 복사

코드는 다음과 같습니다:
function sayName(perfix) { alert(perfix this.name) } obj= new Object(); >obj.name="hero";
sayName.aplly(obj,new Array(" hello,") )



4. 프로토타입 객체의 모든 속성과 메서드는 해당 클래스의 모든 인스턴스에 전달됩니다.




코드 복사

코드는 다음과 같습니다.

function classA (){}
classA.prototype.name="hero"; classA.prototype.showName=function(){alert(this .name)} function classB(){} classB.prototype=new classA(); objb = new classB() objb.showName();//print Hero는 b를 나타냅니다.
여기서 classA의 생성자를 호출하는 데 주의해야 합니다. 매개변수가 전달되지 않을 때 이는 프로토타입 체인의 표준 관행으로, 생성자가 함수에는 매개변수가 없습니다.
그리고 서브클래스의 모든 속성과 메서드는 프로토타입 속성이 할당된 후에 나타나야 하며, 그 안에 있어야 합니다. 이전에 할당된 값은 객체의 프로토타입 속성이 삭제되기 때문입니다. 새 개체를 사용하면 새 메서드가 추가된 원본 개체가 삭제됩니다.


5 혼합 방법

은 가장을 사용하여 생성자 속성을 정의하고 프로토타입 메서드를 사용하여 개체 메서드를 정의합니다.



코드 복사

코드는 다음과 같습니다.

function classA(이름) }
classB.prototype = new classA();
classB.prototype.showName1=function(){alert( this.name "*****"); };
obj = new classB("hero");
obj.showName();
obj.showName1();


call 메소드를 호출하여 classA에 속성 이름을 지정하고, 프로토타입 체인을 사용하여 classA의 showName 메소드를 상속합니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.