gpt4 book ai didi

Javascript:混淆函数调用方法的用法

转载 作者:行者123 更新时间:2023-11-30 17:57:37 25 4
gpt4 key购买 nike

我实现了一个forEach函数:

function forEach(arr, fn) {
for (var i = 0; i < arr.length; i++) {
fn.call({}, arr[i], i);
}
}

我困惑的是 fn.call({}, arr[i], i);

第一个参数像上面一样传递空值 {} 更好

或者将this传入:fn.call(this, arr[i], i);更好?

或者没关系

最佳答案

这很重要。 .call() 的第一个参数是用于this 被调用函数 的值。因此,谈论什么值(value)“更好”是没有意义的;要传递的正确值是您需要的值,以便被调用函数正常运行。

例如,如果您想在 Array 原型(prototype)上调用一个函数,那么该函数中 this 的值必须是“感觉像”数组的东西(一个“长度”属性和数字索引属性)。因此:

var sneaky = {
"0": "hello",
"1": "world",
"length": 2
};

alert( Array.prototype.join.call(sneaky, " - ") ); // "hello - world"

这是可行的,因为该函数期望 this 引用要连接的数组。

有多少函数就有多少关于this的例子。在您的示例代码中,传递 {} 为被调用函数提供了一个对新创建的空对象的 this 引用。那行得通吗?我不知道,因为该功能可以期待任何东西。也没有办法找出答案,除非查看代码(或信任文档)。如果您只知道它是一些随机的任意函数,那么 {} 是一个合理的猜测,尽管 undefined 可能更好,以强制早期失败。

关于Javascript:混淆函数调用方法的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17791836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com