窗口之间有什么区别.主干网中的视图名称和视图名称.js
What's the difference between window.ViewName and ViewName in Backbone.js?
首先,我是 JavaScript 菜鸟,甚至是 Backbone 的菜鸟.js。
我正在关注一些在线教程来熟悉这项技术;在一些教程中,我看到了这个:
Person = Backbone.Model.extend({
initialize: function(){
alert("Welcome to this world");
}
});
var person = new Person;
在其他版本中,我发现了这个符号:
window.WineView = Backbone.View.extend({
initialize:function () {
this.model.bind("change", this.render, this);
}
});
在视图名称中添加"窗口"的必要性是什么?我阅读了一些 JavaScript 文档,其中指出 window
对象表示当前的浏览器窗口,那么我们是否将创建的视图添加为此对象的属性?作者为什么要这样做?
在浏览器 JavaScript 中,window
是全局对象,因此window.Person === Person
除非在作用域链中的某处定义了Person
(function() { var Person; ... }
)。
换句话说,没有区别。(除了使用 7 个额外字符。
你可能想阅读JS范围。 具体来说,如果赋值给一个未定义的变量 ( Person = { ... };
),该变量将被赋值给全局对象 ( window
)。 但是,如果首先声明一个变量 ( var Person = { ... };
),则该变量将分配给局部范围。
撇开体系结构问题(将关联的对象和属性放在一起)不谈,如果尚未定义全局变量,则全局变量的处理方式与对象属性不同。例如,假设上面的代码尚未运行并定义这些对象,则评估
Person
将导致 JavaScript 错误,因为它是一个未定义的全局变量;检查是否已设置Person
的正确方法是更详细
typeof Person !== 'undefined'
另一方面
window.WineView
不会导致错误,而是返回undefined
。
相关文章:
- angular.js没有'无法在PhoneGap中处理视图标记
- backbone.js无法渲染视图
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 删除移动视图粘性js上的粘性导航栏
- Backbone.js将模型绑定到视图时出错
- 如何在渲染视图时将变量传递给Node.js中的脚本标记
- Backbone.js视图中的多个模型
- 带有jquery插件的backbone.js视图
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 使用knockout.js将数组绑定到视图模型
- 如何在主干js中解析视图中的消息
- 似乎无法将功能绑定到骨干网中的视图.js
- 嵌套依赖主干.js具有 require.js 主干的视图.js导致视图作为对象而不是函数加载
- 如何在主干中显示视图.js(路由器.js中不显示警报)
- 如何从主干中的视图呈现视图.js
- Extjs 4 -停止控制器试图加载视图js
- “this.model"不工作的点击视图.JS支柱
- MVC部分视图js文件不工作调试
- Rails3视图- JS模板目录结构