当我做console.log(someobject)
时,我在对象内部看到一些对象,其中包含大量的数据。Console.log显示隐藏的对象信息
如果我在我的对象(属性也是对象)上有很多属性,我可以很容易地获得数百个原型。无论如何,这是否会以任何方式影响性能?我应该使用数组吗?
当我做console.log(someobject)
时,我在对象内部看到一些对象,其中包含大量的数据。Console.log显示隐藏的对象信息
如果我在我的对象(属性也是对象)上有很多属性,我可以很容易地获得数百个原型。无论如何,这是否会以任何方式影响性能?我应该使用数组吗?
它只是JavaScript内部原型链的一部分。无论何时创建新对象,其__proto__
属性都设置为其“父”对象的prototype
属性。要回答你的问题,它不会直接影响你可以控制的性能,所以不要担心。
如果您想了解更多关于它,看看MDN,https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/Proto
熟悉原型继承JavaScript使用。参见例如,here at MDN。
简而言之:JavaScript中的对象不是通过实例化类创建的,而是创建一个与另一个对象(原型)相似的对象。所以每个对象都有一个指向其原型的指针。
如果代码中的某个点需要某个对象的方法或属性,那么编译器会检查对象本身是否拥有这样的属性(comp。hasOwnProperty())。如果不是,它会查看相应的原型对象。如果在那里找不到财产,那么它就会查看原型的原型等等。这一直完成到Object
,这是JavaScript中的基本原型。原型链也被称为prototype chain
。
由于这是该语言的固有特性,您无法绕过它,因此它不会对您的特定网站的性能产生任何影响。
这可能会减慢console.log
调用,但不是生产模式下的应用程序。 无论如何 Object
对象的属性是一个非标准的和不赞成使用的Mozilla扩展,它有一天将被删除,所以不用担心它(标准Object.getPrototypeOf(obj)
方法可以使用,而不是obj.__proto__
)。
数组和对象完全是两回事。使用你所需要的... – gdoron 2012-03-30 10:50:03
数组也可以从'Object'继承,所以在这方面你不会得到任何东西。基本上,所有东西都是JavaScript中的一个对象(在访问它们的方法时,原始类型会转换为对象)。这就是JavaScript。使用哪种数据结构取决于你的数据... – 2012-03-30 10:50:17
以及我只使用对象,因为我可以像对待数组一样使用键 – ellabeauty 2012-03-30 10:50:28