gpt4 book ai didi

Javascript defineGetter

转载 作者:数据小太阳 更新时间:2023-10-29 05:53:27 30 4
gpt4 key购买 nike

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.testa['test'] - 两者都将访问 a 的 test 属性 并因此调用 getter。

编辑:啊,我现在明白你想要什么了。您正在做的是巧妙地使用 getter,但不幸的是,getter 和 setter 不是当前 JavaScript 标准的一部分(它们在 ECMAScript 5 中,但尚未得到广泛支持)。 Google Closure Tools 似乎假设读取变量不会有任何副作用,这在当前版本的 JavaScript 中是正确的,所以我看不出有什么办法可以解决这个问题。您必须编辑输出以将这些内容插入回来。

此外,这与您的问题无关,但我确实希望您在 for-in 结构中进行额外的 hasOwnProperty 检查。

关于Javascript defineGetter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3632217/

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