Наследование. ПОчему так?
Разбираюсь с наследованием по руководству Флэнагана. Там указывается функция создания нового объекта наследующего прототип:
function inherit(p){ if (p==null) throw TypeError(); if (Object.create) { return Object.create(p); } var t = typeof p; if (t !== "object" && t !== "function") throw TypeError; function f() {}; f.prototype = p; return new f(); } Работая с ней, к примеру, так: var o = {}; o.x = 1; var p = inherit(o); p.x = 3; я в итоге получаю вывод: o: Object {x: 1} p: Object {x: 3, x: 1} Вопрос: почему свойство х дублируется, а не изменяется? Где я запутался? |
Что за консоль так выводит? Свойства не могут дублироваться, они находятся в разных объектах:
p.x == 3 // → true p.__proto__.x == 1 // → true |
Консоль хрома выводит.
Цитата:
|
х == 1 находится в прототипе объекта р, х == 3 свойство самого объекта р
|
Я правильно понимаю что в любой текущий момент мы работаем с одним определенным свойством х: если есть свойство х самого объекта, то с ним, а иначе поднимаемся к свойству х прототипа? А вот отображение обоих свойств х одновременно - это "глюк" консоли хрома?
|
да
|
Это не глюк, это фича..
|
Цитата:
|
console.log().
Про консоль.дир не знал. Теперь почитаю про нее. |
Часовой пояс GMT +3, время: 21:48. |