2016-02-16 41 views
-1

我有一個JavaScript對象,它看起來像: -如何使JavaScript對象acessible全球

(function ($, w, d) { 

var myObject= { 

    init: function() { 
     // blablab 
    }, 
    attach: { 
     // blablab 

    }, 
    validation: { 
     // blablab 
    }, 
    submitForm: { 
     // blablab 
    } 
}; 

myObject.init(); 

window.myObject= myObject; 



})(jQuery, window, document); 

我製造的物體全球化的,我到處在我的應用程序例如訪問重新初始化對象。 目前爲止還不錯,但是當我想直接在HTML文件中訪問全局的myObject對象時,它失敗了,我得到undefined

所以,在body - 標籤的底部,我有這樣的:

<script> 
    setTimeout(function (w) { 
     console.log(myObject); 
     // RE-INIT OBJECT HERE 
    }, 1000) 
</script> 

因此,錯誤消息說:myObject is not defined

我不知道爲什麼失敗。有人可以幫我嗎?

+4

你肯定包含你的對象腳本創建代碼執行沒有任何錯誤? – Pointy

+0

您的代碼是正確的。 http://jsbin.com/wowekozace/edit?html,css,js,console,output 檢查您的JavaScript腳本文件加載後是否調用腳本? – Josh

回答

0
var myObject = ""; 

(function ($, w, d) { 

myObject = { 

    init: function() { 
     // blablab 
    }, 
    attach: { 
     // blablab 

    }, 
    validation: { 
     // blablab 
    }, 
    submitForm: { 
     // blablab 
    } 
}; 

myObject.init(); 

})(jQuery, window, document); 

setTimeout(function (w) { 
    console.log(myObject); 
    // RE-INIT OBJECT HERE 
}, 1000) 

檢查腳本標記中的setTimeout是否是js導入文件的AFTER。

+2

它與OP的代碼行爲有何不同? –

+0

@ A.Wolff'myObject'對象在全局範圍內啓動。 – user3662307

+0

但是OP已經將它設置在全局範圍'window.myObject = myObject;' –

0

你設置你的對象,像這樣:

window.myObject = myObject

要在您需要使用window.myObject像這樣在全球範圍內訪問此:

<script> 
    setTimeout(function (w) { 
     console.log(window.myObject); 
     // RE-INIT OBJECT HERE 
    }, 1000) 
</script>