Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Function.apply时泄漏参数_Javascript_Memory Leaks_Arguments_Bind_Apply - Fatal编程技术网

Javascript 使用Function.apply时泄漏参数

Javascript 使用Function.apply时泄漏参数,javascript,memory-leaks,arguments,bind,apply,Javascript,Memory Leaks,Arguments,Bind,Apply,我在GitHub上读到了petkaantonov/bluebird上的文章。当到达章节时,我意识到在我的项目中使用bind和apply可能会出错 《华盛顿邮报》指出: 请注意,将属性添加到函数(例如,fn.$inject=…)和绑定函数(即,Function#bind)会生成隐藏类,因此在使用#apply时,不安全 我过去可以像这样将参数数组传递给构造函数: new (Cls.bind.apply(Cls, arguments))(); 这看起来很可疑,很像帖子中描述的不安全。 这是真的吗?我

我在GitHub上读到了petkaantonov/bluebird上的文章。当到达章节时,我意识到在我的项目中使用
bind
apply
可能会出错

《华盛顿邮报》指出:

请注意,将属性添加到函数(例如,
fn.$inject=…
)和绑定函数(即,
Function#bind
)会生成隐藏类,因此在使用
#apply
时,不安全

我过去可以像这样将参数数组传递给构造函数:

new (Cls.bind.apply(Cls, arguments))();
这看起来很可疑,很像帖子中描述的不安全。 这是真的吗?我是不是做错了

我只是想了解这篇文章中的问题是否适用于这个示例案例,特别是因为对答案进行评论可能会很有用,这样其他人就不会犯同样的错误(这篇文章的投票率很高,所以人们似乎经常使用这个解决方案)

注意:我最近发现了(awesome),这是一个很好的替代方案,可以替代我以前的解决方案:

new Cls(...arguments);

它还表示可以将
参数
传递到
apply()