首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替代绑定功能?

替代绑定功能?
EN

Stack Overflow用户
提问于 2017-08-12 02:48:01
回答 1查看 2K关注 0票数 0

所以我读到了关于V8代码的函数式编程和优化,我决定检查bind函数是否可以被V8优化?

所以我阅读了本机javascript代码,并被这些代码行击中,

代码语言:javascript
复制
 var newfn = function() {
    // Combine the static args and the new args into one big array
    var args = boundargs.concat(Array.prototype.slice.call(arguments));
    return fn.apply(self, args);
  };

这几行代码清楚地表明,参数对象的处理将使返回的函数根据MDN由v8进行优化。所以问题是,他们的任何本地的选择,绑定我可以使用吗?

资源

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-12 07:04:58

我将尝试把我的评论总结成一个答案。

您的问题引用了一些Javascript代码,这些代码实现了类似于Function.prototype.bind()的内容,并且来自Chromium资源库。老实说,我不知道该代码的来源,但是当我查看V8存储库,它代表了当前在V8上的活跃开发(据我所知),您引用的代码是找不到的。我查看了V8存储库中关于"bind“的35页搜索点击,并在您引用的代码中的注释中搜索了几个有些独特的单词,我在当前的V8存储库中找不到它们。

而且,在C++、这里这里中有几个类似于Function.prototype.bind的“本机代码”实现。

因此,我的结论是,您从Chromium引用的类似绑定的Javascript代码目前不是V8的一部分,V8使用原生C++代码实现来实现不存在JS优化问题的Function.prototype.bind。因此,您关于寻找替换的问题实际上是无效的,因为Function.prototype.bind的内置实现似乎没有像您所关心的那样存在任何优化问题。

我熟悉您链接到的优化文档,以及如何非常小心地使用arguments对象,以避免破坏某些Javascript优化。但是,这个问题不适用于用本机Function.prototype.bind代码完成的C++实现,因为这些优化问题只适用于用Javascript编写的代码,而不是用C++编写的代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45646023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档