gpt4 book ai didi

没有变量赋值或声明的 Javascript 属性访问 : Why?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:25 25 4
gpt4 key购买 nike

我继承了一个相当大的代码库,似乎有一些编码模式正在发生,但我无法在我的生活中看到它的作用。

本质上,该应用程序包含许多类,每个类都有一种强制执行单例的工厂函数。但是,似乎有一个多余的行只是访问一个对象属性,而没有将其分配给变量或设置属性。

例如:

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._addEvent;

什么都不做。它不会导致定义该属性,如果该属性尚不存在,也不会导致错误。事实上,在该行之前或之后的 myApp.dialog 对象没有区别。

正如您所猜测的,作者可能认为所讨论的行定义了对象的属性(实际上并没有),并且无论如何下面的代码都不需要预定义对象的属性。

关于没有变量赋值或声明的 Javascript 属性访问 : Why?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24248883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com