Показать сообщение отдельно
  #1 (permalink)  
Старый 09.09.2013, 00:51
Аватар для Arramis
Кандидат Javascript-наук
Отправить личное сообщение для Arramis Посмотреть профиль Найти все сообщения от Arramis
 
Регистрация: 22.07.2013
Сообщений: 104

наследование ...
Приветствую всех.
Мучает вопрос по наследованию на прототипах.
Допустим есть такой код
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 должен работать точно так же как и в первом случае, когда мы явно создаем объект с помощью конструкора. Но выдается ошибка, почему ???

Последний раз редактировалось Arramis, 09.09.2013 в 13:53.
Ответить с цитированием