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)