2015-10-27 97 views
0

我是新手,無法弄清楚這一點。我有這個簡單的一段代碼:如何在JavaScript對象內部引用

var StpTable = function() { 

    function setupPager() { 
    ... 
    if(i<StpTable.a) { 
     ... 
    } 
    ... 
    }; 

    return { 

    "a": 10, 

    "init": function() { 
     setupPager(); 
    } 
    } 

}(); 

如何從與setupPager()函數引用變量a我做,而不必使用變量名StpTable。嘗試與this.a但範圍是關閉的。

有什麼建議嗎?

+0

這有什麼錯用'StpTable'? – Bergi

+0

這是一個很好的問題。有用!在我的眼中,這並不美麗 - 在內部參考中使用外部名稱。但也許這是我的頭扭曲。這對我來說是新的javascript :-) –

回答

3

將對象分配給本地變量,然後再返回並使用它。

var StpTable = function() { 

    function setupPager() { 
    ... 
    if(i<obj.a) { 
     ... 
    } 
    ... 
    }; 

    var obj = { 

    "a": 10, 

    "init": function() { 
     setupPager(); 
    } 
    }; 

    return obj; 

}(); 

或者乾脆分配的功能爲對象的屬性:

var StpTable = function() { 

    function setupPager() { 
    ... 
    if(i<this.a) { 
     ... 
    } 
    ... 
    }; 

    return { 

    "a": 10, 

    "init": setupPager, 
    }; 

}(); 

然後this.a將工作,假設函數調用StpTable.init();

+0

這個。另請參閱[Javascript:對象自定義鍵的函數中的字面引用,而不是'this'](http://stackoverflow.com/q/10711064/1048572),以便比較兩種方法。 – Bergi

+0

方案3:將'this'或'this.a'作爲參數傳遞給'setupPager' – Bergi

+0

'obj'的想法很好。它像一個魅力。我喜歡。 我的'init'函數在我的真實代碼中做了其他幾件事情,所以第二種選擇會變得更復雜一些。在真實的代碼中,第三個也不是那麼容易。我有幾個這些變量,我想從對象中引用,所以第一個變量對我來說是乾淨和簡單的。謝謝。 –

0

是,a可能是一個局部變量

var StpTable = function() { 
    var a = 10; 
    function setupPager() { 
    ... 
    if(i<a) { 
     ... 
    } 
    ... 
    }; 

    return { 

    "a": a, 

    "init": function() { 
     setupPager(); 
    } 
    } 

}();