Мне интересно, можем ли мы поменять тело функции после его построения?
var O = function(someValue){
this.hello = function(){
return "hello, " + someValue;
}
}
O.prototype.hello = function(){
return "hhhhhhh";
}
var i = new O("chris");
i.hello(); // -> this still returns the old definition "hello, chris"
Оператор javascript O.prototype.hello = function(){....}
не переопределяет и не переопределяет поведение функции hello. Почему это? Я знаю, что у него будет ошибка типа, если вы попытаетесь повторно использовать параметр someValue
.
// this will fail since it can't find the parameter 'someValue'
O.prototype.hello = function(){
return "aloha, " + someValue;
}
Мне интересно, почему он позволяет добавлять функцию во время выполнения, например
O.prototype.newFunction = function(){
return "this is a new function";
}
i.newFunction(); // print 'this is a new function' with no problem.
но не позволяет вам изменять определение после его определения.
Я сделал что-то не так? как мы переопределяем и переопределяем функцию внутри класса? и есть ли способ повторно использовать параметр, который мы передали ранее, чтобы создать объект? в этом случае мы можем повторно использовать someValue
, если хотим расширить к нему больше функций.