覆盖/覆盖函数内的函数

时间:2012-03-05 22:59:46

标签: javascript prototype

你可以覆盖/覆盖函数内的函数吗? 我有一个功能,我无法更改代码。我想改变其中一种方法。我已尝试过以下内容,但它仍会提醒“父初始化”

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 :(得分:0)

请参阅小提琴:http://jsfiddle.net/yXguc/

它正在向父母发出警报,因为您实际上正在创建一个新的父级:

child.prototype = new parent();

子init不会发出任何警报,因为它不会调用自己的init。如果你想要执行父的构造函数,你必须手动调用它。

var x = new child();