Денис Завгородний
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); // 3Human.leg = 4;console.log(vasiliy.leg); // 4vasiliy.arm = 2;vasiliy.leg = 2;console.log(vasiliy.arm); // 2console.log(vasiliy.leg); // 2Human.leg = 5;console.log(vasiliy.leg); // 2
Василий
|
Человек
|
//Как назначить прототип?vasiliy.__proto__ = Human;Human.isPrototypeOf(vasiliy); //trueconsole.log(vasiliy.age); //undefinedHuman.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); // undefinedObject.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 |