在另一个脚本中定义对象后调用函数

时间:2014-02-10 12:07:32

标签: javascript jquery

<script src="first.js"></script>
<script src="second.js"></script>

first.js

var obj = {
    id: 1,
    xyz: function(){

    }
};

我想更新id并在second.js文件中调用xyz函数。什么是最好的方法呢? 因为脚本将异步加载。

second.js

obj.xyz();

3 个答案:

答案 0 :(得分:1)

<强>更新

在对这个问题的评论中,你说过你没有使用任何类型的脚本加载器。这意味着,给定您引用的标记,首先加载并执行first.js,然后加载并执行second.js。在second.js之前(或first.js无法加载),first.js将不会加载并运行。所以second.js可以做你所展示的内容;除非first.js完全无法加载,否则obj将会在那里等待。


原始回答基于相关声明脚本异步加载:

嗯,最好的方法是在两者之间建立某种形式的连接或消息。

但你可以通过民意测验来做。

second.js:

(function() {
    attempt();

    function attempt() {
        if (typeof obj !== "undefined") {
            // Got it!
            obj.xyz();
        }
        else {
            setTimeout(attempt, 50);
        }
    }
})();

答案 1 :(得分:0)

尝试强制obj定义为&#34; global&#34;在窗口对象中定义它

window.obj = {
    id: 1,
    xyz: function(){
        alert("hey!");
    }
}

然后致电

window.obj.xyz();

obj.xyz();

答案 2 :(得分:-1)

在body标签内的页面底部添加我们所有的脚本,你的脚本运行得很好。如果你仍然不确定(虽然没有理由)你可以在里面添加你的js调用: -

document.addEventListener('DOMContentLoaded', function() {
   // your code here
}, false);

如果您使用的是jquery,那么您可以在其中添加您的代码: -

$(document).ready(function() {
    //your code
});