Sky*_*ker 11 javascript arrays prototype
我见过人们在javascript中使用两种不同的方法来使用Array对象的不同方法.
我大多使用它:
arr.push(element1, ..., elementN)
Run Code Online (Sandbox Code Playgroud)
但我看到人们使用这个:
Array.prototype.push.apply(this,arguments)
Run Code Online (Sandbox Code Playgroud)
我知道所有JavaScript对象都从其原型继承属性和方法.Object.prototype位于原型链的顶部.
两种方法之间有什么区别?每种方法何时应该使用?
Poi*_*nty 13
.apply()当您有兴趣使用.push()不是真正数组的对象时,将使用调用via .例如,jQuery对象实际上并不是一个数组实例,但是代码主要维护一个.length足以让它看起来像一个数组的属性,至少就.push()其他Array原型方法而言.
对于一个真正的数组实例,没有必要这样做; 该.push()方法可通过原型链直接获得.
所以:
var obj = { length: 0 };
Array.prototype.push.apply(obj, ["hello world"]);
console.log(obj[0]); // hello world
Run Code Online (Sandbox Code Playgroud)