gpt4 book ai didi

javascript - 对象方法上的 setTimeout - ES5 绑定(bind)或关闭?

转载 作者:数据小太阳 更新时间:2023-10-29 04:16:14 25 4
gpt4 key购买 nike

假设我正在使用 HTML5 Canvas 制作一些动画。如果我正在寻找动画对象的方法,这将是更可取的,性能明智的(假设我不关心 IE8):

setTimeout(this.render.bind(this), 15);

var self = this;
setTimeout(function () { self.render() }, 15);

我的特殊案例还不够强烈,无法真正在视觉上产生影响;我只是想找出最佳实践。

我认为用 bind 创建一个新函数比创建一个闭包的开销要小,但我想请教专家。

最佳答案

JavaScript 性能问题很棘手,因为各种引擎的性能特征大相径庭。在一个引擎上快的东西在另一个引擎上很慢。

您的关闭确实应该非常快;毕竟,所有函数都是闭包,并且您的 self 变量是在立即包含的上下文中定义的(因此没有太多通过作用域链查找它)。

但理论上,一个原生支持 ES5 特性的引擎可以优化 bind 的工作方式,使其更快(甚至不需要一个作用域链查找)。

重要吗?不,我会使用对你有意义的东西。请注意,IE8 并不是唯一没有原生 ES5 功能的浏览器(尽管您始终可以使用其中一种 es5 填充程序;与某些 ES5 功能不同,bind 可以完美模拟ES3 代码中的垫片——尽管他们必须使用 call/apply,这在某些引擎上可能比闭包慢)。

关于javascript - 对象方法上的 setTimeout - ES5 绑定(bind)或关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8928880/

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