将方法添加到本机JavaScript对象会对性能产生什么影响?

Fri*_*ure 1 javascript performance prototype

我意识到,向本机JavaScript对象(对象,函数,数组,字符串等)添加方法被一些人认为是不好的做法,但是还有与之相关的性能损失吗?

如果使用其他方法扩展原型,原生对象的实例是否需要更长时间来创建和/或耗尽更多内存?

Sho*_*og9 6

如果使用其他方法扩展原型,原生对象的实例是否需要更长时间来创建和/或耗尽更多内存?

不会.这些事情都不应该发生:每个对象必须保持对其原型的引用,但是如果将更多属性添加到它引用的对象,则该引用将不会变得更大或者需要更长时间来检索.

现在,如果要为其添加足够的其他方法prototype,则可能会开始影响在该类型的对象上查找方法所需的时间.这将实现各不相同,但如果你有没有注意到一个区别,我会感到震惊,(我怀疑你自己开车疯狂试图记住所有这些额外的方法是对运行速度产生显着影响很久以前的名字).


编辑: 这是一个快速而丑陋的测试 - 它在向Array.prototype对象添加500K自定义方法之前和之后创建500K的Array实例.没有明显的差异; 别担心...