问题描述
我想知道为什么在处理数组时,我通常使用 .split
、.indexOf
、.map
等实例方法,而在处理对象时,我主要使用静态方法Object
课?
我为 Object class 计算了 21 个静态方法,而 Arrays 只有 3 个,其中 2 个与创建而不是操作有关。
我能想到的唯一解释是,由于一切都继承自 JS 中的 Object,设计者希望尽可能保持这些 Object 对象的轻量级。
解决方法
我能想到的唯一解释是,由于一切都继承自 JS 中的 Object,设计者希望尽可能保持这些 Object 对象的轻量级。
原来如此。你不想用一堆方法来填充 Object.prototype
,因为它们会在一切对象上(或者至少,从{{ 1}},默认情况下所有对象都会这样做,但您可以使用 Object.prototype
阻止它)。
还有第二个更微妙的原因:因为在一般情况下,您不希望对象更改基本操作。这就是您看到人们避免在对象上使用 Object.create
方法而是直接从 hasOwnProperty
使用它的原因之一:
Object.prototype
上述代码的作者想避免 if (Object.prototype.hasOwnProperty.call(obj,"name")) {
// ...
}
被重新定义为 hasOwnProperty
从而撒谎的可能性。 :-)
obj