返回函数表达式中的对象-为null

时间:2018-11-23 20:56:11

标签: javascript

我正在学习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时test。$ hub为空。$ hub不为空?

谢谢

2 个答案:

答案 0 :(得分:0)

在功能测试的范围内定义了vars(和$ hub:null),而未定义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来访问。

答案 1 :(得分:0)

您应该直接在$ hub上将getter与Object一起使用:

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>