如何使javascript对象全局可用
我有一个javascript对象,它看起来像:-如何使javascript对象全局可用,javascript,jquery,Javascript,Jquery,我有一个javascript对象,它看起来像:- (function ($, w, d) { var myObject= { init: function () { // blablab }, attach: { // blablab }, validation: { // blablab }, submitForm: { // blablab } }; myO
(function ($, w, d) {
var myObject= {
init: function () {
// blablab
},
attach: {
// blablab
},
validation: {
// blablab
},
submitForm: {
// blablab
}
};
myObject.init();
window.myObject= myObject;
})(jQuery, window, document);
我将对象设置为全局对象,因此我可以在应用程序中的任何位置访问它,例如重新初始化对象。
到目前为止还不错,但是当我想直接访问HTML
-文件中的全局myObject
-对象时,它失败了,我得到了未定义的
因此,在主体
-标记的底部,我有以下内容:
<script>
setTimeout(function (w) {
console.log(myObject);
// RE-INIT OBJECT HERE
}, 1000)
</script>
设置超时(功能(w){
console.log(myObject);
//这里的RE-INIT对象
}, 1000)
因此,错误消息显示:myObject未定义
我不知道为什么会失败。有人能帮我吗
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导入的文件之后。您可以这样设置对象:
window.myObject=myObject
要在全局范围内访问此项,您需要像这样使用window.myObject
:
<script>
setTimeout(function (w) {
console.log(window.myObject);
// RE-INIT OBJECT HERE
}, 1000)
</script>
设置超时(功能(w){
console.log(window.myObject);
//这里的RE-INIT对象
}, 1000)
您确定包含对象创建代码的脚本执行时没有任何错误吗?您的代码是正确的。。检查是否在加载javascript文件后调用脚本?@A.WolffmyObject
对象在全局范围内启动。但OP已在全局范围window上设置它。myObject=myObject代码>是,但要访问它,他必须使用窗口。myObject
而不是myObject
,这使得myObject
对象在全局范围内可用