Комментарии 8
При создании объекта содержимое прототипа переносится на объект.Не переносятся, а достижимы из объекта по prototype chain. В JS даже есть функция hasOwnProperty на объекте, которая проверяет наличие свойства без protochain.
Но при этом фактически копируются только скалярные свойства (числа, строки).Все объекты в JS передаются по ссылке, просто некоторые из них immutable.
т.е. прототип — он вообще, полностью, отдельно от объекта, но есть некий «прозрачный прокси», который отдает мне св-во из прототипа если оно не существует в объекте?
Все параметры передаются в JS по значению, просто некоторые значения являются ссылками на объекты.
dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/#realizatsiya-v-ecmascript
И не всё в JS объекты.
dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/#realizatsiya-v-ecmascript
И не всё в JS объекты.
Ну в общем это и имелось ввиду. Передаются ссылки, которые копируются. Главное что объекты не копируются.
PS. Приведите пример необъекта (если только number, но это все условности ;-) ).
-
- 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 строчке у нас скрывается значение из прототипа собственным значением из объекта, однако в прототипе значение остается старым.PS. Приведите пример необъекта (если только number, но это все условности ;-) ).
>> PS. Приведите пример необъекта (если только number, но это все условности ;-) ).
Нет, не условности. 12, «abc», true, false — это всё примитивные значения, а не объекты. При попытке вызвать у них метод, они приводятся к объекту.
Нет, не условности. 12, «abc», true, false — это всё примитивные значения, а не объекты. При попытке вызвать у них метод, они приводятся к объекту.
var a = 'abc'; a.foo = 'bar'; // Здесь a приводится к объекту alert(a.foo); // undefined, если бы строки были объектами, // то было бы bar
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Ext JS — Учимся правильно писать компоненты. Наследование и вложенные конфиги