gpt4 book ai didi

javascript - Function().prototype.call() 实现

转载 作者:行者123 更新时间:2023-11-30 17:20:42 24 4
gpt4 key购买 nike

我正在尝试了解 Function.prototype.call() 的工作原理。我知道它的作用,我可以使用它,但我很好奇这个方法是如何实现的。

是否可以从头开始编写一个功能完全相同的 javascript 方法?

最佳答案

没有 eval 就不可能“展开”可变参数。如果你觉得没问题,你可以试试这个:

function myCall(fun, obj) {
var args = [].slice.call(arguments, 2);
var arglist = args.map(function(_, n) { return "args[" + n + "]" }).join(',');
obj._tmp = fun;
return eval("obj._tmp(" + arglist + ")")
}

例子:

foo = {
x: 123
}

bar = function(y) { return this.x + y }

console.log(myCall(bar, foo, 444))

关于javascript - Function().prototype.call() 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25185353/

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