- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
var a = {};
a.__defineGetter__('test',function() {return 5;});
var i ="test";
除了 a[i]
(同时使用 var i
执行此操作)之外,还有其他方法可以执行 getter
编辑:
我在问如何使用 var i
来做到这一点。我会更好地解释真正的问题。
我在命名空间对象上使用 getter 以仅在需要时加载模块。
MyNameSpace.__defineGetter__('db',function(){MyNameSpace.loadModule('db');});
在这种情况下,我尝试加载所有模块:
for (var i in MyNameSpace){
MyNameSpace[i];
}
我在我的代码上使用了 Google 闭包编译器,它将上面的循环减少为:
for(var i in MyNameSpace);
没有加载任何模块。我试图“欺骗”gcc 让我加载模块。
最佳答案
您可以执行 a.test
或 a['test']
- 两者都将访问 a 的
并因此调用 getter。test
属性
编辑:啊,我现在明白你想要什么了。您正在做的是巧妙地使用 getter,但不幸的是,getter 和 setter 不是当前 JavaScript 标准的一部分(它们在 ECMAScript 5 中,但尚未得到广泛支持)。 Google Closure Tools 似乎假设读取变量不会有任何副作用,这在当前版本的 JavaScript 中是正确的,所以我看不出有什么办法可以解决这个问题。您必须编辑输出以将这些内容插入回来。
此外,这与您的问题无关,但我确实希望您在 for-in
结构中进行额外的 hasOwnProperty
检查。
关于Javascript defineGetter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3632217/
var a = {}; a.__defineGetter__('test',function() {return 5;}); var i ="test"; 除了 a[i](同时使用 var i 执行
为什么每次迭代都会这样: var o = {}; var foo = [['a',1],['b',2],['c',3],['d',4],['e',5]]; for(var i = 0; i < 5;
我是一名优秀的程序员,十分优秀!