【问题标题】:What is the performance impact of adding methods to native JavaScript objects?向原生 JavaScript 对象添加方法对性能有何影响?
【发布时间】:2009-07-28 01:01:30
【问题描述】:

我意识到向原生 JavaScript 对象(对象、函数、数组、字符串等)添加方法被一些人认为是不好的做法,但是这是否也会影响性能?

如果原生对象的原型已通过其他方法扩展,它们的实例是否会花费更长的时间来创建和/或占用更多内存?

【问题讨论】:

    标签: javascript performance prototype


    【解决方案1】:

    如果原生对象的原型已通过其他方法扩展,它们的实例是否会花费更长的时间来创建和/或占用更多内存?

    没有。这些事情都不应该发生:每个对象都必须维护对其原型的引用,但如果向它引用的对象添加更多属性,则该引用不会变得更大或需要更长的时间来检索。

    现在,如果您要向prototype 添加足够 个额外的方法,它可能会开始影响在该类型的对象上查找方法所需的时间。这会因实现而异,但如果您注意到差异,我会感到震惊(我怀疑您会在所有这些附加方法的名称对运行时速度产生明显影响之前早早地记住所有这些方法的名称,这会让您发疯)。


    编辑: here's a quick & ugly test - 它在将 500K 自定义方法添加到 Array.prototype 对象之前和之后创建 500K Array 实例。没有明显差异;不用担心...

    【讨论】:

    • 通过多个原型扩展 javascript 方法查找链会增加查找时间,因为原型遍历是 O(n),但单个原型上的方法查找是恒定时间 O(1)。
    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 2023-03-10
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 2013-03-29
    相关资源
    最近更新 更多