据我所知,以下陈述相同
所以,我一直在做一些测试,我无法弄清楚如何使dot符号正确地用于functionP。
我通常使用转储工具 screendump somewhere on this page 来查看正在发生的事情,但它没有显示看似函数的属性。
alert(functionE()); // returns key and date
alert(functionE.keyE); // returns key and date
function functionE()
{
var myKey = "keyE";
functionE[myKey] = myKey + " +++ " + Date();
return functionE[myKey];
}
alert(functionP()); // returns key and date
alert(functionP.keyP); // RETURNS UNDEFINED
function functionP()
{
var myKey = "keyP";
functionP.myKey = myKey + " +++ " + Date();
return functionP.myKey;
}
alert(functionT()); // returns key and date
alert(functionT.keyT); // returns key and date
function functionT()
{
functionT.keyT = "keyT" + " +++ " + Date();
return functionT.keyT;
}
答案 0 :(得分:4)
因为functionP.myKey
相当于functionP['myKey']
,而不是functionP[myKey]
。
functionE
是你正在做的事情的正确方法。
但是,您可以这样做:
function functionX() {
var key = 'keyP';
var value = 'foo';
this.__defineGetter__(key, function() {
return value;
});
this.__defineSetter__(key, function(val) {
value = val;
});
}
现在它起作用了:
> var o = new functionX()
> o.keyP
"foo"
__defineGetter__
和__defineSetter__
不是标准JavaScript,因此我不会使用它们。使用functionE
。