如何从原型中的forEach推送到构造函数中的数组?

时间:2015-10-27 17:47:36

标签: javascript arrays prototype

如果我有像这样的全局数组

var arr = [value1, value2...];

然后我得到了像这样的建设者

function myFunction() {
    this.array = [];
    this.toArray();
}

然后像这样的原型方法

myFunction.prototype.toArray = function() {
    arr.forEach(function() {
        if (statement) {
        // How can I do if I from here, want to push the current value, to the array in the cunstructor function?
        }
    });
}

正如评论所说,如果我从注释所在的位置,想要将forEach函数中的当前值推回到构造函数中的数组中?我尝试使用this.array.push();,但意识到我无法使用它,因为它现在引用了arr数组。

1 个答案:

答案 0 :(得分:0)

修改 如果你不喜欢上面代码段中的var that = this,你可以这样做:

myFunction.prototype.toArray = function(arr) {
    arr.forEach((function(item) {
        if (item%2 ===0) {
           this.array.push(item);
        }
    }).bind(this));
}

但我更喜欢:

function myFunction() {
    this.array = [];
}

myFunction.prototype.toArray = function(arr) {
    arr.forEach((function(item) {
        if (item%2 ===0) {
           this.array.push(item);
        }
    }).bind(this));
}

var test = new myFunction();
var arr = [1, 2, 3, 4];
test.toArray(arr);
alert(test.array);