[대상을 대상으로 하는 프로그램 설계(7)] 기생식 계승과 기생 조합식 계승
기생식 계승
기본적인 사고방식
봉인 계승 과정에만 사용되는 함수를 만듭니다. 이 함수는 내부에서 어떤 방식으로 대상을 강화하고, 마지막에는 모든 작업을 한 것처럼 대상을 되돌려줍니다.function createAnother(original){
var clone = Object(original); //
clone.sayHi = function(){
alert("hi");
}
return clone;
}
var person = {
name:"Wonder",
colors:["blue","green"]
};
var anotherPerson = createAnother(person);
anotherPerson.sayHi(); //"hi"
기생식 계승은 함수를 복용할 수 없기 때문에 효율이 떨어진다.
기생 조합식 계승
조합 계승의 가장 큰 문제는 두 번의 초유형 구조 함수를 호출하는 것이다. 한 번은 하위 유형의 원형을 만들 때, 다른 한 번은 하위 유형의 구조 함수 내부에 있다.function SuperType(name){
this.name = name;
this.colors = ["red","blue","green"];
}
SuperType.prototype.sayName = function () {
alert(this.name);
};
function SubType(name,age){
SuperType.call(this,name); // SuperType()
this.age = age;
}
SubType.prototype = new SuperType(); // SuperType()
SubType.prototype.constructor = SubType;
SubType.prototype.sayAge = function () {
alert(this.age);
};
기본적인 사고방식
구조 함수를 빌려 속성을 계승하고 원형 체인의 혼성 형식을 통해 계승하는 방법.기생식 계승을 사용하여 초유형의 원형을 계승한 다음에 결과를 하위 유형의 원형에 지정한다.function inheritPrototype(subType,superType){
var prototype = Object(superType.prototype); //
prototype.constructor = subType; //
subType.prototype = prototype; //
}
function SuperType(name){
this.name = name;
this.colors = ["red","blue","green"];
}
SuperType.prototype.sayName = function () {
alert(this.name);
};
function SubType(name,age){
SuperType.call(this,name);
this.age = age;
}
inheritPrototype(SubType,superType);
SubType.prototype.sayAge = function () {
alert(this.age);
};
장점: 고효율 - 슈퍼타입 구조 함수를 한 번만 호출했기 때문에 SubType에서 사용하지 않는다.prototype 위에 불필요하고 불필요한 속성을 만듭니다.또 원형 체인은 변하지 않는다.
기생 조합식 계승은 인용 유형이 가장 이상적인 계승 모델이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
function createAnother(original){
var clone = Object(original); //
clone.sayHi = function(){
alert("hi");
}
return clone;
}
var person = {
name:"Wonder",
colors:["blue","green"]
};
var anotherPerson = createAnother(person);
anotherPerson.sayHi(); //"hi"
조합 계승의 가장 큰 문제는 두 번의 초유형 구조 함수를 호출하는 것이다. 한 번은 하위 유형의 원형을 만들 때, 다른 한 번은 하위 유형의 구조 함수 내부에 있다.
function SuperType(name){
this.name = name;
this.colors = ["red","blue","green"];
}
SuperType.prototype.sayName = function () {
alert(this.name);
};
function SubType(name,age){
SuperType.call(this,name); // SuperType()
this.age = age;
}
SubType.prototype = new SuperType(); // SuperType()
SubType.prototype.constructor = SubType;
SubType.prototype.sayAge = function () {
alert(this.age);
};
기본적인 사고방식
구조 함수를 빌려 속성을 계승하고 원형 체인의 혼성 형식을 통해 계승하는 방법.기생식 계승을 사용하여 초유형의 원형을 계승한 다음에 결과를 하위 유형의 원형에 지정한다.
function inheritPrototype(subType,superType){
var prototype = Object(superType.prototype); //
prototype.constructor = subType; //
subType.prototype = prototype; //
}
function SuperType(name){
this.name = name;
this.colors = ["red","blue","green"];
}
SuperType.prototype.sayName = function () {
alert(this.name);
};
function SubType(name,age){
SuperType.call(this,name);
this.age = age;
}
inheritPrototype(SubType,superType);
SubType.prototype.sayAge = function () {
alert(this.age);
};
장점: 고효율 - 슈퍼타입 구조 함수를 한 번만 호출했기 때문에 SubType에서 사용하지 않는다.prototype 위에 불필요하고 불필요한 속성을 만듭니다.또 원형 체인은 변하지 않는다.
기생 조합식 계승은 인용 유형이 가장 이상적인 계승 모델이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.