Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по прототипу объекта (https://javascript.ru/forum/misc/12191-vopros-po-prototipu-obekta.html)

klimashkin 05.10.2010 12:48

Вопрос по прототипу объекта
 
Добры день!

Не могу разобраться в таком моменте. В статье ООП в javascript: наследование написано:

по умолчанию свойство prototype функции равно пустому объекту new Object()
// Animal.prototype не указан явно, по умолчанию:
Animal.prototype = {}


Но почему тогда два вроде бы одинаковых примера дают разный результат?
function Tree(name) {
   this.name = name;
}
Tree.prototype.sayHello = function(){
	alert(this.name+'\n'+this.constructor);
}
theTree = new Tree("Redwood");
theTree.sayHello();

Результат:
Код:

Redwood
function Tree(name) {
    this.name = name;
}

function Tree(name) {
   this.name = name;
}
Tree.prototype = {}
Tree.prototype.sayHello = function(){
	alert(this.name+'\n'+this.constructor);
}
theTree = new Tree("Redwood");
theTree.sayHello();

Результат:
Код:

Redwood
function Object() {
    [native code]
}

Где я что-то не правильно понял?

Kolyaj 05.10.2010 12:56

Таки потому, что не пустой объект содержится в prototype по умолчанию. Как минимум там лежит свойство constructor. Если вы переопределяете prototype, то желательно восстановить и constructor.

klimashkin 05.10.2010 13:26

Хм.. Тогда надо поправить статью, а то она вводит в заблуждение

А что еще создается в 'умолчальном' прототипе?


Часовой пояс GMT +3, время: 19:28.