javascript函数和foreach范围

时间:2017-01-14 23:13:51

标签: javascript

我对js奇怪的范围行为有一些问题。 我有这个Graph函数(https://github.com/cpettitt/graphlib的简单包装器)。如果我像标记" 1"一切正常,如果我使用forEach我有范围问题。

function Graph() {
    this.g = new graphlib.Graph();
    this.setNode = function (id, value) {
        this.g.setNode(id, value || {}); 
    }
}

var gg = new Graph();
    gg.setNode("1"); //works

    ["2a","2b"].forEach(gg.setNode); //doesn't work

错误为Cannot read property 'g' of undefined g Graph实例变量public $Pictures; public function rules(){ return [ [['Pictures'], 'safe'], ] } public function getPictures(){ $pics="1.jpg"; return $pics; } 在forEach中不可见。

1 个答案:

答案 0 :(得分:0)

使用forEach的第二个参数来锁定对范围的函数调用:

["2a","2b"].forEach(gg.setNode, gg);