gpt4 book ai didi

javascript - 如何使用 call/apply 检查函数是否被调用

转载 作者:数据小太阳 更新时间:2023-10-29 04:40:41 26 4
gpt4 key购买 nike

function foo(){
console.log('foo', this);
}

foo();
foo.call({ bar: 1 });
foo.apply([{ bar: 1 }]);

有什么方法可以知道 foo() 是使用普通调用还是 call/apply 调用的?

http://jsfiddle.net/H4Awm/1/

最佳答案

没有。您无法检测函数是从 call/apply 调用还是正常调用。

它们不是魔法生物,它们所做的只是设置参数和this 值。有一个 subtle difference当涉及到未定义/未声明的值时,仅此而已。

全部.apply.call在 ES5 中做的是:

Return the result of calling the [[Call]] internal method of func, providing thisArg as the this value and argList as the list of arguments.

它正确地设置了内部的 caller 属性,所以像 this 这样天真的东西不会工作。

关于javascript - 如何使用 call/apply 检查函数是否被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19658704/

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