Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
При создании объекта содержимое прототипа переносится на объект.Не переносятся, а достижимы из объекта по prototype chain. В JS даже есть функция hasOwnProperty на объекте, которая проверяет наличие свойства без protochain.
Но при этом фактически копируются только скалярные свойства (числа, строки).Все объекты в JS передаются по ссылке, просто некоторые из них immutable.
-
- var a = new Object();
- a.x = 1;
- var bc = function() {};
- bc.prototype = a;
- var b = new bc();
- b.x++; // b.x = b.x + 1;
- alert(a.x); // 1
- alert(b.x); // 2
- delete b.x;
- alert(b.x); // 1
-
Убеждаемся, что в 7 строчке у нас скрывается значение из прототипа собственным значением из объекта, однако в прототипе значение остается старым.var a = 'abc';
a.foo = 'bar'; // Здесь a приводится к объекту
alert(a.foo); // undefined, если бы строки были объектами,
// то было бы bar
Ext JS — Учимся правильно писать компоненты. Наследование и вложенные конфиги