给定一个函数,如下所示:
var allev = new Array();
function events(index) {
allev[index] = $(this); // doesn't work
}
有什么方法可以让它按照上面的方式工作,或者我总是被限制为:
var allev = new Array();
function events(index) {
// ...
}
function() { // out of scope, so make objects global
var count = allev.length;
var inst = events(count);
allev[count] = inst;
}
如果有比上述两个更好的选择,我也愿意接受。
最佳答案
当您在 JavaScript 中调用函数(而不是方法)时,this
是全局对象,或者在严格模式下为 undefined
。因此,像上面那样使用 this
永远不会起作用。
您可以这样做:
function events(index) {
arr[index] = arguments.callee;
alert("Hi");
}
但是如果您使用严格模式(这实际上是一个非常好的主意),这将会破坏。
您也可以这样做:
function events(index) {
allev[index] = this; // will work if you call with apply or call
}
当且仅当您仅像这样调用事件
:
events.call(events, 12);
call
和 apply
都允许您指定 this
在函数调用内部等于什么。不同之处在于,call
期望列出所有参数,而 apply
期望所有参数以数组形式传递。所以上面的内容相当于
events.apply(events, [12]);
关于javascript - jQuery:将函数 self 添加到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8882297/