переопределить / переписать функцию внутри функции - PullRequest
1 голос
/ 06 марта 2012

Можете ли вы переопределить / переписать функцию внутри функции?У меня есть функция, которую я не могу изменить код.Я хотел бы изменить один из его методов.Я пробовал следующее, но он все еще предупреждает "родительский инициатор"

parent = function(arg){
    this.init = function(){
        alert("parent init")

    }  
    this.other = function(){
        alert('i just do this')           
    }
    // lots of other code that I would like not to have to copy paste

    this.init();  
}

child = function(arg){
    this.init = function(){
         alert("child init")
    }
}        

child.prototype = new parent();
child.prototype.init = function(){
    alert("another child init attempt")
}
child.init = function(){
    alert("another another child init attempt")
}

var x = new child();

1 Ответ

0 голосов
/ 06 марта 2012

См. Скрипку: http://jsfiddle.net/yXguc/

Это предупреждение от родителя, потому что вы фактически создаете нового родителя:

child.prototype = new parent();

Дочерний init ничего не предупреждает, потому что он не вызывает свой собственный init. Если вы хотите, чтобы конструктор родителя выполнялся, вы должны вызвать его вручную.

var x = new child();
...