现在我已经使用了对象文字替换代码中的多个var语句。这是一个典型的例子:
(function(){
var replaceVars = {};
function x(){
replaceVars.num=886;
}
function y(){
x();
replaceVars.cal = replaceVars.num*99;
return replaceVars.cal;
}
})();
所以我的问题是:这有什么不对吗?我的意思是我能看到的最重要的一面是:1)我的整个代码中只有一个var语句。 2)在闭包内所有子进程都可以访问它(这意味着replaceVars属性在闭包范围内变为全局。就像在真正的全局对象(窗口)中创建一个类似全局的子对象(闭包)3)我可以预先定义准备好的属性:
var replaceVars = { something1:“有些价值”, something2:“其他一些价值” }
所以有人会想到我的做事方式有任何缺点吗?
答案 0 :(得分:1)
我认为使用容器对象时没有错误。虽然,我习惯于声明相关代码所需的变量:
var replaceVars = {
num: null,
cal: null
};
但是,再次,这也有效:
(function () {
var num, cal;
function x(){
num = 886;
}
function y(){
x();
cal = num * 99;
return cal;
}
})();
答案 1 :(得分:0)
我不确定你要做什么,但是如果你只想隐藏另一个对象中的对象,例如,只能通过方法访问它们,我会这样做:
var objects = (function() {
var x = 42;
var y = 12;
var container = {};
container.getX = function getX() {
return x;
}
container.getY = function getY() {
return y;
}
container.getSum = function getSum() {
return x + y;
}
return container;
})();
在我看来,这更容易阅读。