Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使javascript对象全局可用_Javascript_Jquery - Fatal编程技术网

如何使javascript对象全局可用

如何使javascript对象全局可用,javascript,jquery,Javascript,Jquery,我有一个javascript对象,它看起来像:- (function ($, w, d) { var myObject= { init: function () { // blablab }, attach: { // blablab }, validation: { // blablab }, submitForm: { // blablab } }; myO

我有一个javascript对象,它看起来像:-

(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.Wolff
myObject
对象在全局范围内启动。但OP已在全局范围
window上设置它。myObject=myObject是,但要访问它,他必须使用
窗口。myObject
而不是
myObject
,这使得
myObject
对象在全局范围内可用