如何在javascript中扩展存在的函数

时间:2014-01-10 17:13:48

标签: javascript jquery function prototype

这个问题的标题可能是重复的,但我不能谷歌找到我需要的东西。 为了考试我之前创建了一个js文件,在这个文件中我定义了一个函数

function fun1()
{
    alert("a");
}

所以我在一些“点击”触发器中调用此函数

$("button").click(function(e){
    fun1();
})

现在,我添加了新模块,我不想更改函数1的定义,我想像这样扩展函数1

function fun1ex()
{
     alert("b");
}

这意味着,当点击“按钮”时,将显示2个警告框(“a”)和(“b”) 我可以使用课程和原型吗? 但我无法想象如何做到这一点。 感谢

2 个答案:

答案 0 :(得分:1)

只需将新功能附加到点击事件:

$("button").click(function(e){
    fun1();
});

$("button").click(function(e){
    fun1ex();
});

这将是alert("a")alert("b")

答案 1 :(得分:1)

我认为我们可以做那样的事情

function mytest(text) {
                this.text = text;
                this.fun1 = function() {
                    alert("a "+text);
                }
                this.fun2 = function() {
                    alert("b "+text);
                }
                this.fun3 = function(){
                    for(var i in this) {
                        //executeFunctionByName("mytest."+i, window)
                        //eval("mytest."+i);
                        if(typeof this[i] === "function" && i != "fun3") {
                           this[i]();
                        }
                          //alert(typeof this[i]);
                    }

                }
            }

            mytest.prototype.fun4 = function() {
                alert("c " + this.text);
            }

            var test1 = new mytest("tung");
            test1.fun3();

在本次考试中,我定义了fun3来执行test1对象中可用的所有方法(fun3除外) 在另一个项目(或js文件)中,我可以创建新的protopye函数来扩展fun3。

mytest.prototype.fun4 = function() {
                    alert("c " + this.text);
                }

可能很多人都知道这一点,但我希望它对像我这样的每个新手都有用。 感谢