【发布时间】:2012-06-18 23:04:22
【问题描述】:
我创建了一个实用函数,我编写的几乎所有 Javascript 代码都包含它。上述函数的目的是简单地从数组中删除一个元素。它接受一个数组和一个索引作为参数,并返回删除了所需元素的数组。
函数如下:
sliceHere = function(array, i)
{
buffOne = array.slice(0, i);
buffTwo = array.slice(i + 1);
return buffOne.concat(buffTwo);
}
它工作得很好。如果我有一个数组a = ["a", "b", "c"],并且我想从中删除"a",我只需执行a = sliceHere(a, 0);。
虽然这确实工作,我想用更“优雅”的东西来代替它。我想做的是使函数sliceHere 成为我拥有的 all 数组的方法。所以我可以简单地做a.sliceHere(0) 并达到同样的效果。感觉是一种更好的做事方式,如果我错了,请纠正我。
我做的是这样的:
sliceHere = function(i)
{
buffOne = this.slice(0, i);
buffTwo = this.slice(i + 1);
this = buffOne.concat(buffTwo);
}
Array.prototype.sliceHere = sliceHere
这似乎根本行不通。因为我知道“this”可能不是实际的数组。 如何从方法内部引用数组?
【问题讨论】:
-
你可以做
a.splice(0,1);吗?而且您甚至不必将其分配给任何东西。
标签: javascript arrays oop function prototype