长期以来,我一直使用对象文本来替换代码中的多个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:“一些其他值”}
所以有人能想到我做事的方式有什么坏处吗?
发布于 2012-03-22 19:22:01
我不认为使用容器对象有什么问题。不过,我习惯于声明相关代码所需的变量:
var replaceVars = {
num: null,
cal: null
};但是,再一次,这也起作用了:
(function () {
var num, cal;
function x(){
num = 886;
}
function y(){
x();
cal = num * 99;
return cal;
}
})(); 发布于 2012-03-22 19:20:17
我不知道您想要做什么,但是如果您只想在另一个对象中隐藏对象,并且只通过方法访问对象,我会这样做:
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;
})();在我看来,读起来容易多了。
https://stackoverflow.com/questions/9828795
复制相似问题