Console.log显示隐藏的对象信息

时间:2012-03-30 10:46:54

标签: javascript jquery

当我console.log(someobject)时,我在对象中看到了一些__proto__个对象,其中包含大量数据。

如果我的对象(属性也是对象)有很多属性,我可以很容易地获得数百个 protos 。无论如何,这会以任何方式影响性能吗?我应该使用数组吗?

3 个答案:

答案 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__)。