gpt4 book ai didi

javascript - 为什么我不能在替换函数中使用 .call()?

转载 作者:行者123 更新时间:2023-12-03 11:20:29 27 4
gpt4 key购买 nike

为什么这是有效的:

function func(a,b,c) {
console.log(this, a,b,c);
return '';
}
'testing'.replace(/e/, func);

但这不是:

function func(a,b,c) {
console.log(this, a,b,c);
return '';
}
'testing'.replace(/e/, func.call);

如果 func 是一个函数引用,而 call 是一个函数引用,它们不应该都有效吗?

这是一个 fiddle 这个

最佳答案

因为当你传递 call 函数时,你将它从 func 的上下文中取出,所以在 call 内部 this 关键字将引用 window 而不是 func

window 不是一个函数,但是 call 期望 this 是一个函数,所以它中断了。

为了比较。

var AnObject = {
call: function () { console.log("this.location is: ", this.location); },
location: "This string is the location property of AnObject"
};

AnObject.call();
setTimeout(AnObject.call, 500);

关于javascript - 为什么我不能在替换函数中使用 .call()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4958464/

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