OLOO
Objects Linded to Other Objects
by Artem
HTML
<!-- 1. protected/private свойства на прототипе? -->
<!-- 2. Behavior Delegation. Как проверить конечный объект? --> Checked!
<!-- 3. Свойство constructor. Проверка instanceof -->
JavaScript
'use strict';
const Foo = {
init(name) {
this.name = name;
},
sayHi() {
console.log(`Hello, my name is ${this.name}`);
}
};
Foo.init.prototype = Foo; //- 3
const Bar = Object.create(Foo, {
_admin: {
writable: true,
configurable: false,
value: false
},
admin: {
get() {
return Object.getPrototypeOf(this)._admin; //- 1
},
set(value) {
Object.getPrototypeOf(this)._admin = value;
}
}
});
Bar.isAdmin = function() {
console.log(this._admin);
}
const vasya = Object.create(Bar);
vasya.init('vasya');
vasya.sayHi();
vasya.admin = true;
//vasya.isAdmin();
console.dir(vasya);
console.log(vasya instanceof Foo.init); //- 2 А как же Bar?
console.log(Bar.isPrototypeOf(vasya)); //- 2
console.log(Foo.isPrototypeOf(vasya)); //- 2