js 대상의 계승
js 계승의 실현 방식
//
function Animal(name){
//
this.name=name;
this.sleep=function(){
console.log(this.name+" ");
}
}
//
Animal.prototype.eat=function(food){
console.log(this.name+" "+food);
}
원형 체인 계승
부류의 실례를 자류의 원형으로 하고 자류의 원형 체인에 부류의 실례를 구축한다.
function Cat(){
}
Cat.prototype=new Animal();
Cat.prototype.name='cat';
var cat=new Cat();
console.log(cat.name);
console.log(cat.eat('fish'));
console.log(cat.sleep());
console.log(cat instanceof Animal);//true
console.log(cat instanceof Cat);//true
console.log(Cat instanceof Animal);//false
특징: 1.매우 순수한 계승 관계로 실례는 자류의 실례이자 부류의 실례이다.2. 부류에 추가된 원형 방법과 원형 속성, 자류는 모두 접근할 수 있다.3. 단점을 쉽게 실현할 수 있다: 1.하위 클래스에 속성과 방법을 추가하려면 new Animal () 같은 문장 뒤에 실행해야 하며 구조기에 넣을 수 없습니다.2. 다계승이 불가능하다.3. 원형 대상의 인용 속성은 모든 실례가 공유하는 4.하위 클래스 실례를 만들 때 상위 클래스 구조 함수처럼 전참할 수 없습니다.실례는 구축할 때 하위 클래스에 전참할 수 없습니다.
구조 계승
부류의 구조 함수를 사용하여 자류 실례를 강화하는 것은 부류의 실례 속성을 자류에 복제하는 것과 같다(원형에 사용되지 않음)
function Cat(name){
Animal.call(this);
this.name=name;
}
var cat=new Cat();
console.log(cat.name);
console.log(cat.sleep())
console.log(cat instanceof Animal);//false
console.log(cat instanceof Cat);//true
특징: 1.하위 클래스 실례가 상위 클래스 인용 속성을 공유하는 문제를 해결했습니다. 2.하위 클래스 실례를 만들 때 상위 클래스에 매개 변수를 전달할 수 있습니다. 3.다중 계승 (call 여러 상위 대상) 가능 단점: 1.인스턴스는 상위 클래스의 인스턴스가 아니라 하위 클래스의 인스턴스입니다. 2.부류의 실례 속성과 방법만 계승할 수 있고 원형 속성과 방법은 계승할 수 없다.함수 복용을 실현할 수 없습니다. 모든 하위 클래스는 부류 실례 함수의 복사본이 있어 성능에 영향을 줍니다
인스턴스 상속
상위 인스턴스에 새 특성을 추가하여 하위 인스턴스로 반환
function Cat(name){
var instance=new Animal();
instance.name=name;
return instance;
}
var cat=new Cat();
console.log(cat.name)
console.log(cat.sleep())
console.log(cat instanceof Animal)
console.log(cat instanceof Cat)
특징: 1.호출 방식을 제한하지 않습니다. new 하위 클래스 () 든 하위 클래스 () 든 되돌아오는 대상은 모두 같은 효과 단점을 가지고 있습니다. 1.인스턴스는 상위 클래스의 인스턴스이지 하위 클래스의 인스턴스가 아닙니다. 2.다중 상속은 지원되지 않음
복제 상속
function Cat(name){
var animal=new Animal();
for(var p in animal){
Cat.prototype[p]=animal[p]
}
Cat.prototype.name=name;
}
var cat=new Cat();
console.log(cat.name);
console.log(cat.sleep());
console.log(cat instanceof Animal); // false
console.log(cat instanceof Cat); // true
특징: 1.다중 계승 단점 지원: 1.낮은 효율 2.부류의 일일이 들 수 없는 방법을 얻을 수 없습니다
조합 상속
부류 구조를 호출하여 부류의 속성을 계승하고 전참의 장점을 보존한 다음에 부류 실례를 부류 원형으로 삼아 함수 복용을 실현한다
function Cat(name){
Animal.call(this);
this.name=name;
}
Cat.prototype=new Animal();
var cat=new Cat();
console.log(cat.name);
console.log(cat.sleep())
console.log(cat instanceof Animal);//true
console.log(cat instanceof Cat);//true
특징: 1.실례의 속성과 방법을 계승할 수도 있고, 원형의 속성과 방법을 계승할 수도 있다.상위 클래스의 인스턴스이자 하위 클래스의 인스턴스입니다.인용 속성 공유 문제가 없습니다. 4.전삼 가능5.함수 복용 가능 단점: 부류의 구조 함수를 두 번 호출했습니다
기생 조합 계승
function Cat(name){
Aniaml.call(this);
this.name=name;
}
(function(){
var Super=function(){};
Super.prototype=Animal.prototype;
Cat.prototype=new Super()
})()
// Test Code
var cat = new Cat();
console.log(cat.name);
console.log(cat.sleep());
console.log(cat instanceof Animal); // true
console.log(cat instanceof Cat); //true
특징: 완벽!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.