아래에는 일반적으로 사용되는 몇 가지 방법이 나와 있습니다.
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의 메서드를 상속합니다.
객체 가장은 다중 상속을 구현할 수 있습니다. 예를 들어
this.newMethod = classX;
this.newMethod()
delete this.newMethod;
this.newMethod=classY ;
this.newMethod():
delete this.newMethod;
}
그러나 classX와 classY가 동일한 속성이나 메서드인 경우 classY의 우선순위가 높습니다.
call() 메서드는 고전적인 개체 가장 메서드와 유사하며 이 개체로 사용됩니다. , 기타 매개변수는
코드 복사
}
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개의 매개변수가 있으며 하나는 이 객체로 사용되고 다른 하나는 매개변수 배열 함수에 전달됩니다.
코드 복사
코드는 다음과 같습니다:
sayName.aplly(obj,new Array(" hello,") )
4. 프로토타입 객체의 모든 속성과 메서드는 해당 클래스의 모든 인스턴스에 전달됩니다.
코드 복사
코드는 다음과 같습니다.function classA (){}
여기서 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 메소드를 상속합니다.