javascript - jQuery:将函数 self 添加到数组?

标签 javascript jquery arrays function self

给定一个函数,如下所示:

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);

callapply 都允许您指定 this 在函数调用内部等于什么。不同之处在于,call 期望列出所有参数,而 apply 期望所有参数以数组形式传递。所以上面的内容相当于

events.apply(events, [12]);

DEMO

关于javascript - jQuery:将函数 self 添加到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8882297/

相关文章:

javascript - 按字母顺序对字符串数组进行排序,然后按数字顺序按特殊字符排序

javascript - 我需要帮助将矩形 append 一些深

javascript - 简单的 ajax load() 在 jquery 中不起作用

jquery - 在 iPhone 上 - jquery 打开/关闭嵌套导航

javascript - Bootstrap Twitter 输入类型文件如何清除该文件?

java - 在字符串中查找整数

javascript - 浏览器滚动动画

javascript - 无法读取 null 的属性 'age'

javascript - 如何在 jQuery 中选择元素之后的第一个特定类

java - Java中两个矩阵相乘