Javascript redefiniuje i zastępuje istniejące funkcje
Zastanawiam się, czy możemy jeszcze zmienić ciało funkcji po jego skonstruowaniu?
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"
Instrukcja javascriptO.prototype.hello = function(){....}
nie zastępuje i przedefiniowuje zachowanie funkcji hello. Dlaczego ? Wiem, że wystąpi błąd typu, jeśli spróbujesz ponownie użyć parametrusomeValue
.
// this will fail since it can't find the parameter 'someValue'
O.prototype.hello = function(){
return "aloha, " + someValue;
}
Zastanawiam się, dlaczego pozwala na dodanie funkcji w czasie wykonywania
O.prototype.newFunction = function(){
return "this is a new function";
}
i.newFunction(); // print 'this is a new function' with no problem.
ale nie pozwala zmienić definicji po jej zdefiniowaniu. Czy zrobiłem coś złego ? Jak zastąpić i przedefiniować funkcję w klasie? i czy istnieje sposób na ponowne użycie parametru, który przekazaliśmy wcześniej, aby utworzyć obiekt? w takich przypadkach jak ponownie wykorzystaćsomeValue
jeśli chcemy rozszerzyć do niego więcej funkcji.