是否可以在Javascript中执行类似的操作:
var myFunction = function() {
return true;
};
var anotherFunction = function () {
return false;
};
$(function () {
this.myFunction = anotherFunction;
myFunction(); // to return false
});
我的直觉说是的,但它不起作用。我怎样才能实现这个功能?
答案 0 :(得分:2)
它确实有效,你刚刚做了一个错字(错过this
)导致旧函数被调用;
$(function () {
this.myFunction = anotherFunction;
this.myFunction(); // to return false
});
或
$(function () {
myFunction = anotherFunction;
myFunction(); // to return false
});
在您覆盖的情况下,this.myFunction
和myFunction
会引用不同的内容。
这是你固定的小提琴: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());
});