我应该在我的JavaScript应用程序中创建访问器方法吗?
Should I create accessor methods in my JavaScript app
我用这个形式来构建我的JS代码
window.APP = window.APP || (function (global) {'use strict';
return {
operation: '',
operand: 0,
result: '',
init: function () {
}
};
}(window.document));
有更好的方法如下:
var APP = APP || (function (global) {
return {
init: function () {
}
};
}(window.document));
但这样 JSLint 抱怨 APP 在 APP 的第二次调用中没有初始化,具体来说这部分:"var APP = APP"所以窗口。APP工作,JSLint在窗口命名空间中找到APP对象。
如果您检查第一个代码块,我有三个应用程序范围的属性,操作数,操作数和结果。我需要这三个可访问的子函数和子对象。到目前为止,我使用此表单来访问它们:
window.APP.operand = global.getElementById("operand").value;
这有效,但问题是,代码整体看起来非常丑陋,并且杂乱无章,充满了额外的不必要的文本。在我的 250 行代码中,我有这个"窗口"。APP"前缀无处不在。
我的问题是,我应该创建特殊的访问器方法来获取/设置这些属性中的每一个,或者是否有更好的方法来避免该窗口。APP前缀?
让我知道你的想法。
您应该能够混合使用这两种方法并使用
var APP = window.APP || (function(doc) { "use strict";
…
return {…};
}(document));
这
似乎很有希望:
var APP = APP || (function (global) {
var operand = 0,
operation = '',
result = '';
return {
init: function () {
}
};
}(window.document));
不过必须尝试一下。我之后定义了一些对象,例如
APP.namespace('Aritmetic', {
// properties/methods
});
命名空间函数创建 APP 的子对象。在上面的例子中,Aritmetic 将成为 APP 的子对象,并将包含在 namespace() 函数的第二个参数中定义的所有属性方法。
我将命名空间函数的第二个参数更改为:
APP.namespace('Aritmetic', (function () {
var parent = window.APP;
return {
test: function () {
parent.operand = "2"; // all properties/methods from window.APP are accessible trough parent.
}
};
}());
这可能不是解决问题的最优雅的解决方案,但它有效。如果有人知道更好的解决方案,请告诉我。
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 从vuejs中的组件模板访问父方法
- 访问对象的最简单方法'的单独财产
- 有没有一种方法可以从光滑的网格访问插件
- 尝试访问方法的 OOP JavaScript
- 从匿名函数层内访问方法变量
- jQuery控件之外的访问方法
- 访问方法内部的变量's函数
- Angular2:模板中类的访问方法
- 在javascript中使用对象访问方法
- 如何在原型继承模式中访问方法
- async模块内部类的访问方法或
- 当用作其他对象的事件处理程序时,访问方法中的成员
- 在javascript中访问方法skillet.toString()
- 为什么我的applet在通过JavaScript访问方法时不能加载本地库?
- 另一个插件的访问方法
- 使用jquery脚本时如何访问方法
- Javascript -如何在没有'this'的情况下改变作用域和访问方法?
- 为什么我的主干模型奇怪地嵌套在集合中,需要钻取才能访问方法/属性?
- Javascript OOP -从原型设置器访问方法