- , . , . -. .
, Object.create . , Base - -, :
№ 1
function Base(){
this.baseMember = 'I am the parent';
}
Base.prototype.baseMethod = function(){
console.log('I am Base');
};
function Successor(){
this.__proto__ = new Base();
this.successorMember = 'I am a child';
}
Successor.prototype.successorMethod = function(){
console.log('I am Successor');
};
var child = new Successor();
console.log(child.successorMember);
console.log(child.baseMember);
console.log('baseMethod' in child);
console.log('successorMethod' in child);
successorMethod, Successor.prototype. , __proto__ .
№ 2
__proto__ - Object.create. , , Successor
function Successor(){
var successor = Object.create(new Base());
this.neverShowMember = 'I will not exist in resulting object';
successor.successorMember = 'I am a child';
return successor;
}
:
var child = new Successor();
console.log(child.successorMember);
console.log(child.baseMember);
console.log('baseMethod' in child);
console.log('successorMethod' in child);
. neverShowMember, this . .
№ 3
- . -. , ,
function Successor(){
var successor = new Base();
successor.successorMember = 'I am a child';
return successor;
}
var child = new Successor();
console.log(child.successorMember);
console.log(child.baseMember);
console.log('baseMethod' in child);
console.log('successorMethod' in child);
, . , . , Successor
successor.baseMember = 'I am already grown enough!';
(child) baseIntance.baseMember, " ". , child.__proto__.baseMember. , javascript .
, , Successor.prototype, . Successor.
, , , object
function object(o) {
function F() {}
F.prototype = o;
return new F();
}
, o . ,
var child = object(new Base());
child.successorMember = 'I am a child';
OP. superInstance, , Object.create. , factory
var superInstance = function(){
return {
member1: 'superMember1',
member2: 'superMember2'
}
};
var subInstance = Object.create(superInstance());
function superInstance(){
this.member1: 'superMember1',
this.member2: 'superMember2'
};
var subInstance = Object.create(new superInstance());
,