覆盖/隐藏Javascript函数

时间:2013-11-29 15:10:31

标签: javascript jquery

是否可以在Javascript中执行类似的操作:

var myFunction = function() {
    return true;
};

var anotherFunction = function () {
    return false;
};

$(function () {
    this.myFunction = anotherFunction;

    myFunction(); // to return false
});

Fiddle

我的直觉说是的,但它不起作用。我怎样才能实现这个功能?

3 个答案:

答案 0 :(得分:2)

它确实有效,你刚刚做了一个错字(错过this)导致旧函数被调用;

$(function () {
    this.myFunction = anotherFunction;

    this.myFunction(); // to return false
});

$(function () {
    myFunction = anotherFunction;

    myFunction(); // to return false
});

在您覆盖的情况下,this.myFunctionmyFunction会引用不同的内容。

这是你固定的小提琴:http://jsfiddle.net/ExfP6/3/

答案 1 :(得分:2)

您可以使用另一个具有相同名称的变量覆盖外部范围内的任何变量:

var myFunction = function() {
    return true;
};

var anotherFunction = function () {
    return false;
};

$(function () {
    var myFunction = anotherFunction; // override the myFunction name inside this scope

    myFunction(); // returns false
});

myFunction(); // returns true

您可以在此处详细了解范围:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions_and_function_scope

答案 2 :(得分:1)

适合我jsFiddle

var myFunction = function () {
    return true;
};

var anotherFunction = function () {
    return false;
};

$(function () {
    myFunction = anotherFunction; //remove this. your function was attach to a variable so by reassigning that variable with "anotherFunction" you will get the desired result.

    $('#result').html(""+myFunction());
});