【发布时间】:2009-07-28 01:01:30
【问题描述】:
我意识到向原生 JavaScript 对象(对象、函数、数组、字符串等)添加方法被一些人认为是不好的做法,但是这是否也会影响性能?
如果原生对象的原型已通过其他方法扩展,它们的实例是否会花费更长的时间来创建和/或占用更多内存?
【问题讨论】:
标签: javascript performance prototype
我意识到向原生 JavaScript 对象(对象、函数、数组、字符串等)添加方法被一些人认为是不好的做法,但是这是否也会影响性能?
如果原生对象的原型已通过其他方法扩展,它们的实例是否会花费更长的时间来创建和/或占用更多内存?
【问题讨论】:
标签: javascript performance prototype
如果原生对象的原型已通过其他方法扩展,它们的实例是否会花费更长的时间来创建和/或占用更多内存?
没有。这些事情都不应该发生:每个对象都必须维护对其原型的引用,但如果向它引用的对象添加更多属性,则该引用不会变得更大或需要更长的时间来检索。
现在,如果您要向prototype 添加足够 个额外的方法,它可能会开始影响在该类型的对象上查找方法所需的时间。这会因实现而异,但如果您注意到差异,我会感到震惊(我怀疑您会在所有这些附加方法的名称对运行时速度产生明显影响之前早早地记住所有这些方法的名称,这会让您发疯)。
编辑: here's a quick & ugly test - 它在将 500K 自定义方法添加到 Array.prototype 对象之前和之后创建 500K Array 实例。没有明显差异;不用担心...
【讨论】: