我意识到将方法添加到本机JavaScript对象(对象,函数,数组,字符串等)被一些人认为是不好的做法,但是还有与之相关的性能损失吗?
如果使用其他方法扩展原型,原生对象的实例是否需要更长时间才能创建和/或耗尽更多内存?
答案 0 :(得分:6)
如果使用其他方法扩展原型,原生对象的实例是否需要更长时间才能创建和/或耗尽更多内存?
没有。这些事情都不应该发生:每个对象必须保持对其原型的引用,但是如果将更多属性添加到它引用的对象,那么引用将不会变得更大或者需要更长时间来检索。
现在,如果要向prototype
添加足够的其他方法,则可能会开始影响在该类型的对象上查找方法所需的时间。这将因实现而有所不同,但如果您发现有任何不同之处,我会感到震惊(我怀疑您在尝试记住所有这些附加方法的名称之前很久就会发现它会对运行时速度产生明显影响)。
编辑: here's a quick & ugly test - 在向Array.prototype
对象添加500K自定义方法之前和之后,它会创建500K的Array实例。没有明显的差异;不用担心......