JavaScript函数-全局命名空间
在Javascript中,存在一个继承主干模型的函数JavaScript函数-全局命名空间,javascript,backbone.js,javascript-namespaces,Javascript,Backbone.js,Javascript Namespaces,在Javascript中,存在一个继承主干模型的函数 window.MyModel = Backbone.Model.extend({ .. .. }); window.MyCollection = Backbone.Collection.extend({ .. .. }); 在另一个JS文件中,我们访问这个函数 var MyModelInstance = new window.MyModel(); 要求是,所有函数都需要以特定的全局名称空间(例如,公司名称“Google”)作为前缀,而不是
window.MyModel = Backbone.Model.extend({ .. .. });
window.MyCollection = Backbone.Collection.extend({ .. .. });
在另一个JS文件中,我们访问这个函数
var MyModelInstance = new window.MyModel();
要求是,所有函数都需要以特定的全局名称空间(例如,公司名称“Google”)作为前缀,而不是通用关键字“window”。我们如何才能做到这一点
我尝试了以下方法,但没有成功
var googleNameSpace= defineNamespace("Google");
googleNameSpace.MyModel = Backbone.Model.extend({ .. .. });
googleNameSpace.MyCollection = Backbone.Collection.extend({ .. .. });
var MyModelInstance = new Google.MyModel();
在所有文件中,首先添加此行
window.googleNameSpace = googleNameSpace || {};
更新:好的,您需要谷歌作为名称空间,然后像这样使用它
function defineNamespace(str) {
window[str] = window[str] || {};
return window[str];
}
googleNamespace = defineNamespace('Google');
现在可以工作了您不需要在
窗口
前面加前缀,因为这是假定的。你可以定义
window.myNamespace = Backbone.Model.extend({ .. .. });
然后仅使用以下内容引用:
myNameSpace.....
e、 g
可通过以下方式引用:
myModule.helper.{{property/method}}
这看起来不错。但是,如果名称空间是'Google.Module1',你可能需要多写一些代码..比如先拆分它们,然后逐字检查包..它不工作。。给出错误,即“UncaughtTypeError:Object不是函数:20”。在第20行,我调用var MyModelInstance=new Google.MyModel();其抛出错误,即“UncaughtTypeError:Object不是函数:20”
myModule.helper.{{property/method}}