[英]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.