簡體   English   中英

返回函數表達式中的對象-為null

[英]Returning an object in an function expression - is null

我正在學習JavaScript。

我有這個代碼...

var test = new function () {

    var vars = {
        $hub: null
    };

    var init = function () {
        vars.$hub = $.connection.blabla;
    };

    return {
        vars: vars,
        init: init,
        $hub: vars.$hub
    };

};

$(document).ready(function () {
    test.init();
    test.vars.$hub..... // Works perfecetly
    test.$hub..... // Doesn't work - test.$hub is null
});

我不明白為什么當test.vars。$ hub不為空時test。$ hub為空?

謝謝

vars(和$ hub:null)在Function test的范圍內定義,而test。$ hub沒有定義。

如果您寫了:

var test = new function () {

    var $hub = null;

    var vars = {
        $hub: null
    };

    var init = function () {
        vars.$hub = $.connection.blabla;
    };

    return {
        vars: vars,
        init: init,
        $hub: vars.$hub
    };

};

您現在可以將test.$hub的值訪問為null

您應該直接在$ hub上使用Object與getter

 var test = new function() { return { vars: { $hub: null }, init: function () { this.vars.$hub = 'something'; }, get $hub() { return this.vars.$hub; } } }; $(document).ready(function () { console.log(test.$hub) // before init test.init(); console.log(test.vars.$hub) // Works perfecetly console.log(test.$hub) // Works too!!! }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM