gpt4 book ai didi

javascript - fn.apply(fn, []) 是做什么的?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:14:41 48 4
gpt4 key购买 nike

我有一段代码接受 fn 作为参数并将其存储在 object 属性中。

var obj = {};

function anotherFn(fn){
obj["name"] = fn.apply(fn, []);
}

function google(){
console.log("hello");
}
anotherFn(google);
console.log(obj.name);

我不明白的是 fn.apply(fn,[]) 代码及其用途。通常,当我们想在不同的 this/context 中执行 fn 时,我们会使用 callapply 方法。

但是 fn.apply(fn, []) 在这里做了什么?困惑是为什么我不能做

obj["name"] = fn();

最佳答案

fn.apply(fn, []) 使用上下文(this 的值)调用存储在 fn 中的函数,同时执行fn 的函数),以及 [] 中包含的参数(无参数)。

以这种方式调用 apply 似乎很奇怪,因为它等同于调用 fn.call(fn)

fn() 不是 是合适的替代品,因为 fn() 将在全局上下文中执行,这意味着该值函数中的 this 将是 window(假设是浏览器环境)。

关于javascript - fn.apply(fn, []) 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323168/

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