new Backbone.Router.extend…在没有括号的情况下使用时的差异
new Backbone.Router.extend ... Difference when using it without the brackets
以下之间的区别是什么:
new Backbone.Router.extend({initialize: function(){console.log("Created")}});
和
new (Backbone.Router.extend({initialize: function(){console.log("Created")}}));
为什么底部的一个输出"Created"到控制台,而顶部的没有?为什么它们如此不同
更有趣的是:
var tmp = new Backbone.Router.extend({initialize: function(){console.log("Created")}});
new tmp();
会产生错误。
但是,以下输出"已创建"。
var tmp = Backbone.Router.extend({initialize: function(){console.log("Created")}});
new tmp();
那么,它们为什么以及如何不同呢?
我不是backbone.js用户,但我仍然可以回答这个问题,因为它主要与本地javascript有关。
对你的第一次陈述的解释:
// All this does is to return the constructor to the variable router
var router = new Backbone.Router.extend({initialize: function(){console.log("Created")}});
// To initiatize an instance you do this. This should print "created" in the console.
var obj = new router;
在第二个语句中,您将上述代码的两行合并为一行。首先执行括号,即返回构造函数。然后,"new"创建一个实例:
// This is just a short-hand way to execute both the above statements at once
var obj = new (Backbone.Router.extend({initialize: function(){console.log("Created")}}));
希望这能有所帮助。
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何在不传递此信息的情况下查找被调用的元素
- 如何在不刷新页面的情况下更新显示框
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 在我的情况下,如何进行http请求
- 在不知道深度或父属性的情况下从对象中删除属性
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- ROR:如何在不重新加载浏览器的情况下从控制器获取参数
- 如何在不影响其他元素的情况下扩展DIV
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- 在不移动内部文本的情况下缩放元素的效果
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 默认情况下折叠和展开嵌套列表
- 如何在不单击javascript中的按钮的情况下触发事件
- new Backbone.Router.extend…在没有括号的情况下使用时的差异