A.prototype =
{
subO:
{
f: function ()
{
this // Вернёт subO
// А как получить this прототипа?
}
}
};
function MyObject() {
}
MyObject.prototype = {
sub: {},
}
var a = new MyObject(),
b = new MyObject();
a.sub.test = 'foo';
b.sub.test === 'foo';
function A(){}
var subO = {
f: function(){
return this.that;
}
}
A.prototype = {
get subO(){
var P = Object.create(subO);
P.that = this;
return P;
}
}
var inst = new A;
inst.subO.f() === inst; // true
function A(){
this.subO = {
f: function(){
return this;
}.bind(this)
}
}
var inst = new A;
inst.subO.f() === inst; // true
// объект прототип;
var A = {
x: 10,
f: function() {
console.log(this.x);
}
}
// наследник;
var sub0 = Object.create(A); // A - прототип для sub0;
// переопределяем;
sub0.x=20;
// магия JS =)
sub0.f() // 20
sub0.f.apply(A) // вызов в контексте прототипа, возвращает 10;