请看下面的代码:
var o;
(function (p) {
p = function () {
alert('test');
};
})(o);
o(); // Error: 'o is not a function'
在上述函数中,我创建了一个带有一个参数的匿名函数,并将之前创建的对象作为参数自我调用。 然后,我将这个对象指向一个函数(从新范围内部),最终(尝试)从外部调用它。 我的问题是,如何通过引用传递该参数以更改它所指向的指针?
请看下面的代码:
var o;
(function (p) {
p = function () {
alert('test');
};
})(o);
o(); // Error: 'o is not a function'
你可以利用 Javascript 通过引用传递对象这一事实,实现你想要的效果:
var o = { };
(function (p) {
p.fn = function () {
alert('test');
};
})(o);
o.fn();
最好按照语言的本意使用它,而不是试图将其弯曲以适应仅在根据不同原则构造的语言中才有意义的习语。
var o = (function(p) {
return function() {
alert('test');
};
})();
o();
o
)的名称,我只需要从第一行开始更改它(var o;
),以及在将其作为参数传递的部分(})(o);
);我不需要更改匿名函数中的任何内容。 - Andreas Grech(function (p, name) {
p[name] = function() {
alert('test');
};
})(window, "o");
o();
这将传递窗口对象和您的新函数名称。然后将您的函数分配给窗口,现在可以调用它。除非您要使用闭包,否则我建议直接分配函数。
function o() {
alert('test');
};
o();