数组内的函数忽略数组的作用域

时间:2016-11-15 13:29:48

标签: javascript node.js

我有一个构造函数,我试图在其原型中有一个函数数组,但我需要函数来使构造函数创建对象的范围,而不是数组的范围。 我尝试使用.bind(this)或.bind(_p)但是“this”是节点服务器的范围而_p只是没有变量的原型。

function BoardModel() {
    this.x = 3
    this.y = 2
}

_p = BoardModel.prototype;

_p.skillFunctions = [
    function(){
        console.log(this.x); //undefined
    },
    function(){
        console.log(this.y); //undefined
    },
];

2 个答案:

答案 0 :(得分:0)

为什么不为每个属性使用自己的方法,而不是数组?



function BoardModel() {
    this.x = 3
    this.y = 2
}

_p = BoardModel.prototype;

_p.skillFunctionsX = function (){
    console.log(this.x);
};

_p.skillFunctionsY = function (){
    console.log(this.y);
};

var item = new BoardModel;
item.skillFunctionsX();
item.skillFunctionsY();




答案 1 :(得分:0)

箭头函数在封闭的上下文中使用它,那么如何(双关语)?

function BoardModel() {
    this.x = 3
    this.y = 2

    this.skillFunctions = [
       () => { console.log(this.x) },
       () => { console.log(this.y) },
    ];
}

let board = new BoardModel()

board.skillFunctions.forEach((skillFunction) => { skillFunction() })