gpt4 book ai didi

javascript - 无法从全局空间检索应用程序对象

转载 作者:行者123 更新时间:2023-11-28 01:00:13 25 4
gpt4 key购买 nike

我向我的index.html 添加了两个文件,如下所示:

    <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Marionette</title>
<link rel="stylesheet" href="styles/bootstrap.min.css">
</head>
<body>
<div class="content"></div>
<script src="js/jquery-1.11.1.min.js"></script>
<script src="js/underscore.js"></script>
<script src="js/backbone.js"></script>
<script src="js/backbone.marionette.js"></script>
<script src="js/initApp.js"></script>
<script src="js/routes.js"></script>
<script src="js/app.js"></script>
</body>
</html>

这是我的routes.js 文件:

    (function(){
Social = window.Social || {};
Social.Routes = Backbone.Router.extend({
initialize:function(){
console.log('from routes');
}
});
}());

app.js:

jQuery(document).ready(function($) {
Social = window.App || {};
Social.App = new Backbone.Marionette.Application();

Social.App.addInitializer(function(){
console.log(Social);
});

Social.App.start();
});

initApp.js

(function(){
Social = window.Social || {};
}())

我明白,我添加到全局空间的方式在这里是错误的。任何人都可以正确地将我的变量添加到全局空间吗?

我是否需要在这些文件之前添加一个单独的文件以使该应用程序可供所有人使用?

最佳答案

此时您只是隐藏现有的window.Social变量。您可以轻松访问它,而无需额外的分配。正确的方法是通过闭包传递 window.Social :

(function(social){
social.mySocial = function() {

};
}(window.Social));

如果您可以确定您的文件将按顺序加载,则可以通过外部JS文件来确保window.Social存在,否则您将需要执行window.Social | | (window.Social = {}); 每次。

Have a read here对于一些命名空间模式。

关于javascript - 无法从全局空间检索应用程序对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25707949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com