javascript 계승의 실현
var Parent = function(name){
this.name = name || 'parent';
}
Parent.prototype = {
obj:{a: 1},
getName: function(){
return this.name;
}
}
var Child = function(name){
this.name = name || 'Child';
}
Child.prototype = new Parent()
var p = new Parent();
var c = new Child();
console.log( p.getName() )
console.log( c.getName() )
단점: 하위 클래스가 부류 구조기의 초기화를 실현하려면 다시 써야 한다.
모드 2,
var Parent = function(name){
this.name = name || 'parent';
}
Parent.prototype = {
obj:{a: 1},
getName: function(){
return this.name;
}
}
var Child = function(name){
Parent.apply(this, arguments); //
}
Child.prototype = new Parent()
var p = new Parent();
var c = new Child('child');
console.log( p.getName() )
console.log( c.getName() )
단점: 부류 구조 함수는 두 번 실행되었는데, 한 번은 부류 구조 함수 중, 한 번은 부치 부류 원형일 때 이것은 매우 많다.
모드 3,
var Parent = function(name){
this.name = name || 'parent';
}
Parent.prototype = {
obj:{a: 1},
getName: function(){
return this.name;
}
}
var Child = function(name){
Parent.apply(this, arguments);
}
Child.prototype = Parent.prototype //
var p = new Parent();
var c = new Child('child');
console.log( p.getName() )
console.log( c.getName() )
단점: 하위 클래스의 수정은 상위 클래스의 값을 변경합니다.
모드 4,
var Parent = function(name){
this.name = name || 'parent';
}
Parent.prototype = {
getName: function(){
return this.name;
},
obj: {a:1}
}
var Child = function(){
Parent.apply(this, arguments);
}
var F = function(){}
F.prototype = Parent.prototype;
Child.prototype = new F();
var p = new Parent('parent');
var c = new Child('child');
console.log(child.obj.a) ; //1
console.log(parent.obj.a) ; //1
child.obj.a = 2 ;
console.log(child.obj.a) ; //2
console.log(parent.obj.a) ; //2
모드 5,
var deepClone = function(source,target){
source = source || {} ;
target = target || {};
for(var i in source){
if(source.hasOwnProperty(i)){
if(typeof source[i] === 'object'){
target[i] = (source[i] instanceof Array) ? [] : {};
deepClone(source[i],target[i]) ;
}else{
target[i] = source[i];
}
}
}
return target ;
} ;
var extend = function(Parent,Child){
Child = Child || function(){} ;
if(Parent === undefined)
return Child ; //
Child = function(){
Parent.apply(this,argument) ;
} ;
//
Child.prototype = deepClone(Parent.prototype) ;
// constructor
Child.prototype.constructor = Child ;
} ;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.