Array.prototype没有修改原始数组

时间:2014-08-29 02:43:18

标签: javascript arrays

我想在不修改原始数组的情况下创建一个新的Array方法。

my_array.push('foo') //modifies my_array
my_array.slice(2) //returns a new array without modifying my_array

我想创建一个新的Array.prototype方法,该方法返回一个数组而不修改它被调用的数组。所以这是可能的:

//[define new method here] Array.prototype.add_foo = function() {...
var my_array = ['poo'];

my_array.add_foo(); //would return ['poo', 'foo'];
my_array; //would return ['poo'];

2 个答案:

答案 0 :(得分:4)

my_array.concat('foo');

concat不会改变原始数组。

答案 1 :(得分:2)

Array.prototype.add_foo = function(){
    var ret = this.slice(0); //make a clone
    ret.push("foo"); //add the foo
    return ret; //return the modified clone
}