当我console.log(someobject)
时,我在对象中看到了一些__proto__
个对象,其中包含大量数据。
如果我的对象(属性也是对象)有很多属性,我可以很容易地获得数百个 protos 。无论如何,这会以任何方式影响性能吗?我应该使用数组吗?
答案 0 :(得分:1)
它只是JavaScript内部原型链的一部分。每当创建新对象时,其__proto__
属性都将设置为其“父”对象的prototype
属性。要回答你的问题,它对你可以直接控制的性能没有影响,所以不用担心。
如果您想了解更多相关信息,请查看MDN,https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/Proto
答案 1 :(得分:1)
熟悉JavaScript使用的原型继承。例如,参见here at MDN。
简而言之:JavaScript中的对象不是通过实例化类创建的,而是创建一个类似于另一个对象(原型)的对象。所以每个对象都有一个指向其原型的指针。
如果代码中的某个点需要对象的方法或属性,则编译器会检查对象是否拥有这样的属性本身(comp。hasOwnProperty())。如果没有,它会查看相应的原型对象。如果找不到该属性,那么它会查看原型的原型等等。这一直到Object
完成,这是JavaScript中的基本原型。原型链也称为prototype chain
。
由于这是该语言的固有特性,因此无论如何都无法规避它,因此它不会对您的特定网站的性能产生任何影响。
答案 2 :(得分:1)
这可能会降低console.log
次调用的速度,但不会降低您的应用程序在生产模式下的速度。
无论如何Object
对象的__proto__属性是一个非标准的,已弃用的Mozilla扩展,它将在某一天删除,所以不要担心它(标准的Object.getPrototypeOf(obj)
方法已经可以了用而不是obj.__proto__
)。