为什么 Object 类主要使用静态方法而 Array 类主要使用实例方法?

问题描述

我想知道为什么在处理数组时,我通常使用 .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