骨干网命名
Backbone namespacing
我正试图从《开发backbone.js应用程序》一书中学习主干
它描述了臭名昭著的TodoMVC
应用程序,我也在几个在线教程中查看了它。
我似乎在任何地方都找不到关于这行代码含义的解释:
var app = app || {} ;
在这本书中,模型、视图、集合和路由器的代码被拆分为单独的文件,这些文件被放置在相应的文件夹中。每个文件都以这个代码开头,但没有解释为什么它以这个开头。我认为这是某种命名空间,||
是逻辑Or运算符,但坦率地说,我不知道他们在这里试图实现什么。
有谁能启发我吗
Valleyken
在构建应用程序的某个时刻,您可能希望异步加载文件,这意味着您无法控制文件的解释顺序,也无法控制app
变量的声明时间。
使用var app = app || {} ;
可以使用松散增强模式的变体:您可以大致将此语句转换为如果应用程序已经声明,请保留它,如果不创建新对象并使用它。
看看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators对于本声明的内部工作原理的解释:
&;和||运算符实际返回指定的操作数,因此如果这些运算符与非布尔运算符一起使用值,则它们可能返回非布尔值。
通常这样做是为了在未传递本地变量时为其设置默认值:
function(arg){
var arg = arg || {};
console.log(arg);
}
如果传递了arg,则将本地变量arg设置为传递的对象,否则将通过{}创建一个新对象,并将本地arg变量设置为此对象。
请参阅:需要和不需要的函数变量
window.app = app || {};
app.models = app.models || {};
app.models.myModel = {
myfunction: function () {
// your code...
}
}
这允许您创建空对象,将所有Javascript对象存储在其中。(名称空间)保持对象有序,而不是在窗口上(全局名称空间)
|| {}
只是防止您在javascript文件的加载顺序发生变化时意外地将命名空间设置为空对象。在将其设置为{}
之前,它会进行检查以确保没有对象
- 骨干网讲述了如何从api中获取数据
- 找出骨干网“路由器”实际上得到了什么
- 骨干网-访问路由器历史记录
- 骨干网命名
- 似乎无法将功能绑定到骨干网中的视图.js
- 骨干网.js阿贾克斯打电话
- 有没有办法用骨干网捕获所有不匹配的路由
- 骨干网的基本目的和好处是什么.js
- 简单的骨干网.js模型连接
- Galleria.io 和骨干网.js CPU 使用率 100%
- 具有多个浏览器选项卡/窗口的骨干网.js和本地存储覆盖数据
- 骨干网中的高级路由.js具有功能分组
- 如何识别具有骨干网的内存泄漏.js
- 骨干网.js火狐问题
- 高图表重新加载骨干网的问题.js
- jqGrid 使用带分页的骨干网
- 骨干网.js并正确重构
- 骨干网.js路由器的严格参数匹配
- 骨干网.js大型多页面应用程序,管理页面过渡干净销毁,创建等
- 事件与在骨干网中收听