谓词功能减低为什么需要包装的功能?
我玩弄Array.reduce与集之间的互动,我发现以下奇怪的行为。
通常情况下这个工程:
console.log(
Set.prototype.add.call(new Set(), 1, 0, [])
);
// Set { 1 }
回答如下:
实际上有脚本的两个部分需要以正常工作的正确调用上下文(或this
值)。第一部分,你已经想通了,是你需要调用Set.prototype.add
与新创建Set
的呼唤下,通过传递Set
为.call
第一个参数:
// works:
Set.prototype.add.call(new Set(), 1, 0, []);
// works, args[0] is the new Set:
[1,2,3].reduce((..args) => Set.prototype.add.call(..args), new Set());
但另一个问题是,.call
需要与approprite调用上下文被调用。 Set.prototype.add.call
指的是相同的功能Function.prototype.call
:
console.log(Set.prototype.add.call === Function.prototype.call);
与本文相关的文章
评论列表(0)
- 暂无评论