Javascript 为什么对象类主要使用静态方法,而数组类主要使用实例方法?

Javascript 为什么对象类主要使用静态方法,而数组类主要使用实例方法?,javascript,javascript-objects,Javascript,Javascript Objects,我想知道为什么在处理数组时,我通常使用实例方法,例如.split,.indexOf,.map,而在处理对象时,我主要在对象类上使用静态方法 我统计了21个静态方法,其中只有3个与创建有关,而不是与操作有关 我能给出的唯一解释是,由于所有东西都继承自JS中的Object,所以设计者希望尽可能地保持这些Object对象的轻量级 我能给出的唯一解释是,由于所有东西都继承自JS中的Object,所以设计者希望尽可能地保持这些Object对象的轻量级 就是这样。您不想用一堆方法填充对象.prototype

我想知道为什么在处理数组时,我通常使用实例方法,例如
.split
.indexOf
.map
,而在处理对象时,我主要在
对象
类上使用静态方法

我统计了21个静态方法,其中只有3个与创建有关,而不是与操作有关

我能给出的唯一解释是,由于所有东西都继承自JS中的Object,所以设计者希望尽可能地保持这些Object对象的轻量级

我能给出的唯一解释是,由于所有东西都继承自JS中的Object,所以设计者希望尽可能地保持这些Object对象的轻量级

就是这样。您不想用一堆方法填充
对象.prototype
,因为它们将位于对象的所有对象上(或者至少是继承自
对象.prototype
的所有对象,默认情况下所有对象都会这样做,尽管您可以使用
对象.create
阻止它)

还有第二个更微妙的原因:在一般情况下,您不希望对象改变基本操作。这就是人们避免在对象上使用
hasOwnProperty
方法而直接从
对象使用它的原因之一。prototype

if (Object.prototype.hasOwnProperty.call(obj, "name")) {
    // ...
}
上述代码的作者希望避免
hasOwnProperty
被重新定义为
obj
的可能性,这样它就会存在。:-)

const obj={
hasOwnProperty(){
返回true;
}
};
console.log(obj.hasOwnProperty(“foo”);//真的
console.log(Object.prototype.hasOwnProperty.call(obj,“foo”);//false,这是正确的
我能给出的唯一解释是,由于所有东西都继承自JS中的Object,所以设计者希望尽可能地保持这些Object对象的轻量级

就是这样。您不想用一堆方法填充
对象.prototype
,因为它们将位于对象的所有对象上(或者至少是继承自
对象.prototype
的所有对象,默认情况下所有对象都会这样做,尽管您可以使用
对象.create
阻止它)

还有第二个更微妙的原因:在一般情况下,您不希望对象改变基本操作。这就是人们避免在对象上使用
hasOwnProperty
方法而直接从
对象使用它的原因之一。prototype

if (Object.prototype.hasOwnProperty.call(obj, "name")) {
    // ...
}
上述代码的作者希望避免
hasOwnProperty
被重新定义为
obj
的可能性,这样它就会存在。:-)

const obj={
hasOwnProperty(){
返回true;
}
};
console.log(obj.hasOwnProperty(“foo”);//真的

console.log(Object.prototype.hasOwnProperty.call(obj,“foo”);//FALSE,即正确的这是错误的,数组也可以有对象AgSugRe--相反,不是所有的对象都继承自对象,静态方法可以应用于从<代码> null >代码>中创建的对象,例如考虑代码> A=对象.Cube(NULL);海豹(A)这是错误的,数组也可以有对象UgSeGeRE相反——不是所有的对象都继承自对象,静态方法可以应用于从<代码> null <代码>创建的对象,例如考虑代码> A= Objist.Cube(NULL);对象。印章(a)