2012-03-30 90 views
0

当我做console.log(someobject)时,我在对象内部看到一些对象,其中包含大量的数据。Console.log显示隐藏的对象信息

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

+0

数组和对象完全是两回事。使用你所需要的... – gdoron 2012-03-30 10:50:03

+1

数组也可以从'Object'继承,所以在这方面你不会得到任何东西。基本上,所有东西都是JavaScript中的一个对象(在访问它们的方法时,原始类型会转换为对象)。这就是JavaScript。使用哪种数据结构取决于你的数据... – 2012-03-30 10:50:17

+0

以及我只使用对象,因为我可以像对待数组一样使用键 – ellabeauty 2012-03-30 10:50:28

回答

1

熟悉原型继承JavaScript使用。参见例如,here at MDN

简而言之:JavaScript中的对象不是通过实例化类创建的,而是创建一个与另一个对象(原型)相似的对象。所以每个对象都有一个指向其原型的指针。

如果代码中的某个点需要某个对象的方法或属性,那么编译器会检查对象本身是否拥有这样的属性(comp。hasOwnProperty())。如果不是,它会查看相应的原型对象。如果在那里找不到财产,那么它就会查看原型的原型等等。这一直完成到Object,这是JavaScript中的基本原型。原型链也被称为prototype chain

由于这是该语言的固有特性,您无法绕过它,因此它不会对您的特定网站的性能产生任何影响。

1

这可能会减慢console.log调用,但不是生产模式下的应用程序。 无论如何 Object对象的属性是一个非标准的和不赞成使用的Mozilla扩展,它有一天将被删除,所以不用担心它(标准Object.getPrototypeOf(obj)方法可以使用,而不是obj.__proto__)。