在父范围内访问变量

时间:2017-08-03 17:49:13

标签: javascript

我试图从可选对象中的函数内部访问selectItems数组,但不确定是否有办法在不将_Multiselect对象作为参数传递回函数的情况下执行此操作。还有其他方法吗?

function _MultiSelect() {
}
_MultiSelect.prototype = {

    selectedItems: [],

    selectable: {

        myFunc: function(){
            //how can I access selectedItems from here
        }
    }
}

2 个答案:

答案 0 :(得分:2)

一个选项是使selectable函数返回包含myFunc的对象以及其他任何内容。这允许您捕获闭包中的_MultiSelect上下文并在您公开的方法中使用它。

_MultiSelect.prototype = {

    selectedItems: [],

    selectable: function() {
       var context = this;
       return {
          myFunc: function(){
            console.log(context.selectedItems);
            //how can I access selectedItems from here
          }
       }
    }
}

USECASE:

(new _MultiSelect).selectable().myFunc();

答案 1 :(得分:1)

您可以在其中存储此上下文,请参阅以下代码

    _MultiSelect.prototype = {

    selectedItems: [],

    selectable: function() {
        // store the context of this in that
       var that = this;
       return {
          myFunc: function(){
            // is accessible
            console.log(that.selectedItems);
          }
       }
    }
}