Приветствую всех.
Мучает вопрос по наследованию на прототипах.
Допустим есть такой код
function Parent() {
this.parentProperty = "value",
this.parentMethod = function() {
alert(this.parentProperty);
}
}
function Child() {}
var parentObject = new Parent();
Child.prototype = parentObject;
var childObject = new Child();
childObject.parentMethod(); // value
здесь все работает и алертиться свойство родительского объекта
и есть такой код ...
var parentObject = {
parentProperty: "value",
parentMethod: function() {
alert(this.parentProperty);
}
};
var childObject = {};
childObject.prototype = parentObject;
childObject.parentMethod(); // Uncaught TypeError: Object #<Object> has no method 'parentMethod'
но почему childObject не имеет метода parentMethod() ???
ведь если рассуждать по логике, то создание объекта с синтаксисом var obj = {}; подразумевает под собой неявное создание объекта встроенным конструктором Object() (тоесть так: var obj = new Object()) - в таком случае этот prototype должен работать точно так же как и в первом случае, когда мы явно создаем объект с помощью конструкора. Но выдается ошибка, почему ???