Денис Завгородний
var a = {}; // Создали пустой объект
// А пустой ли он?
console.log(a); // Object {}
// Если проинспектировать в Chrome Dev Tools
// Object {}
// __proto__: Object
|
|
Object Человек
|
Object Человек
|
Object Василий
|
Object Человек
|
var vasiliy = {
gender: 'man',
name: 'Василий',
__proto__: Object Human,
}
var Human = {
head: 1,
neck: 1,
body: 1,
arm: 3,
leg: 2,
}
console.log(vasiliy.arm); // 3
Human.leg = 4;
console.log(vasiliy.leg); // 4
vasiliy.arm = 2;
vasiliy.leg = 2;
console.log(vasiliy.arm); // 2
console.log(vasiliy.leg); // 2
Human.leg = 5;
console.log(vasiliy.leg); // 2
Василий
|
Человек
|
//Как назначить прототип?
vasiliy.__proto__ = Human;
Human.isPrototypeOf(vasiliy); //true
console.log(vasiliy.age); //undefined
Human.age = 3.2e9;
console.log(vasiliy.age); //3200000000
//Массив тоже объект
Human.options = [];
console.log(vasiliy.options); //[]
vasiliy.options.push('smart');
console.log(vasiliy.options); //["smart"]
console.log(Human.options); //["smart"]
var nikolay = new Human;
console.log(nikolay.options); //["smart"]
Object.create(proto[, propertiesObject])
//Создать объект с прототипом
var obj = Object.create(null); //или var obj = {};
obj.value = 1;
var other = Object.create(obj);
console.log(other.value); // 1
Object.setPrototypeOf(obj, prototype);
//Заменить или установить прототип
var obj = Object.create(null);
obj.value = 1;
var other = Object.create(null);
console.log(other.value); // undefined
Object.setPrototypeOf(other, obj);
console.log(other.value); // 1
Object.isExtensible(obj)
/*Проверим можно ли расширить объект
или сменить ему прототип */
Object.isExtensible(other); // true
Object.freeze(obj)
//Заморозим объект
var freeze = Object.freeze(other);
function fabric() { // функция-конструктор?
/** Мы помним, что this магически
создается и связывается с созданным объектом
в процессе исполнения
т.е. сначала this = {}
*/
console.log(this);
}
var obj = new fabric(); // {}
var obj = fabric(); // ???
// Получим
Window {obj...} // если исполняем в браузере
// глобальный объект
function Cart() {...}
var userCart = new Cart(); // Экземпляр функции
var userCart = new Cart; // Так, кстати, тоже можно
|
|
class Man extend Human {
constructor() {
super();
this.gender = 'man';
say() {
console.log('Im ' + this.gender);
}
}
} var vasiliy = new Man();
vasiliy.say(); // Im man
![]() |
Спасибо!Завгородний ДенисНайти можно в фейсбучике https://www.facebook.com/denis.zavgorodny |