【发布时间】:2016-06-10 15:59:31
【问题描述】:
所以我知道您可以向您的 javascript 对象原型添加新方法。
myObject.prototype.myFunction = function {}。我想为我的数组实例做同样的事情,但不断出错。像这样的东西。
var myArray = [1,2,3,4,5,6,7,8,9,0];
myArray.prototype.bubbleSort = function(){
// sort stuff here.
}
为什么不允许这样做?我想既然数组继承自 Object ,你应该能够像对象一样扩展它们。
如果这不可能,我该如何添加 .符号函数调用我的数组,所以我可以说。 myArray.bubbleSort(); 而不是 bubbleSort(myArray); 而不向 Array.prototype 添加方法。
我认为我的问题引起了一些混乱,所以请在回答之前阅读本节。谢谢。
我的目标是有一个名为myArray 的数组,它有一个特定的方法bubbleSort。我不想更改主要的 Array.Prototype。
所以以后我可以做这样的事情。 var yourArray = new myArray() 所以现在因为yourArray 是myArray 的实例,它将可以访问bubblesort 函数。
我们可以在不改变主 Array.prototype 的情况下实现这一点吗?
【问题讨论】:
-
是的,数组
.prototype.bubbleSort -
或
myArray.constructor.prototype.bubbleSort = function(){…};。 -
如果只希望在单个实例上,直接添加即可。
myArray.bubbleSort = function() { ... };。就那么简单。将其添加到原型意味着它将被添加到许多实例中。 -
@xofux 谢谢。这行得通,但你能详细说明为什么这行得通吗?它有副作用吗?一旦我这样做,所有其他数组方法都会起作用吗?
-
@YasinYaqoobi 根据您的更新,juvian 有正确答案。
标签: javascript arrays prototype prototypal-inheritance