【发布时间】:2014-08-06 14:01:51
【问题描述】:
我继承了一个相当大的代码库,并且似乎有一些编码模式正在发生,但我终生无法看到它的作用。
本质上,该应用程序包含许多类,每个类都有一种强制单例的工厂函数。但是,似乎有一条多余的行,它只是访问对象属性而不将其分配给变量或设置属性。
例如:
myApp.dialog.AddEvent = Backbone.View.extend({
initialize: function() { ... },
render: function() { ... },
refresh: function() { ... }
});
myApp.dialog._addEvent; // <-- What is this for?
myApp.dialog.addEvent = function() {
var d = myApp.dialog._addEvent;
if (!d) {
d = myApp.dialog._addEvent = new myApp.dialog.AddEvent();
}
return d;
}
myApp.dialog._addEvent 行实际上做了什么,如果有的话?它在整个应用程序中出现的次数表明它不仅仅是一个错字。可能是旧 IE 的某种属性实例化 hack 或类似的东西?
【问题讨论】:
-
你问的那一行没有做任何事情。它不会导致该属性被定义,如果该属性不存在,它不会导致错误。事实上,
myApp.dialog对象在该行之前或之后没有区别。 -
谢谢,是的,我就是这么想的。我认为这可能是对没有赋值的等效变量声明的错误尝试(例如
var addEvent;)。
标签: javascript properties singleton prototypal-inheritance