所以我了解到您可以向 javascript 对象原型(prototype)添加新方法。
myObject.prototype.myFunction = function {}
。我想对我的数组实例做同样的事情,但不断出错。像这样的东西。
var myArray = [1,2,3,4,5,6,7,8,9,0];
myArray.prototype.bubbleSort = function(){
// sort stuff here.
}
为什么不允许这样做?我认为既然数组继承自对象,你应该能够像对象一样扩展它们。
如果这不可能,我该如何添加一个 .符号函数调用我的数组,所以我可以说。 myArray.bubbleSort();
而不是 bubbleSort(myArray);
而不向 Array.prototype 添加方法。
我认为我的问题引起了一些困惑,所以请在回答之前阅读本节。谢谢。
我的目标是创建一个名为 myArray
的数组,该数组具有特定的 bubbleSort 方法。我不想更改主要的 Array.Prototype。
所以以后我可以做这样的事情。 var yourArray = new myArray()
现在因为 yourArray
是 myArray
的实例,所以它可以访问 bubblesort 函数。
我们可以在不改变主 Array.prototype 的情况下实现这个吗?
最佳答案
数组也是对象,因此您可以轻松地将其作为函数添加到该数组:
var myArray = [1,2,3,4,5,6,7,8,9,0];
myArray.bubbleSort = function(){console.log(this)}
请注意,如果您在库中执行此操作,您可能会像这样破坏代码:
for(var i in myArray){
console.log(i)
}
因为这也会给 bubbleSort 属性
更好的方法是扩展一个数组来制作一个包装器:
function sortableArray(){
return this
}
sortableArray.prototype = Object.create(Array.prototype);
sortableArray.prototype.bubbleSort = function(){
console.log(this)
}
var arr = new sortableArray()
arr.push(1)
arr.push(0)
arr.push(9)
arr.bubbleSort();
关于javascript - 我可以将 javascript Prototype 添加到我的数组实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752558/