foo.properties
を返すような変数を作成したい{default:{x:undefined}}
。ただし、プロパティ変数は直接編集できない__defineGetter__
ため、読み取り可能にするために使用されますが、書き込み可能ではないことに気付くかもしれません。
問題は、プロパティ変数の一部ではなく、プロパティをゲッターの一部にしたいということです。しかし、ここfoo.properties
でコンソールに入力すると、 が返されます{default:{x:undefined},attr:function(){ [native code] }}
。attr がプロパティ変数に関連付けられないようにするにはどうすればよいですか?
var foo = new (function(){
var properties = {
default:{
x:undefined
}
};
this.__defineGetter__('properties',(function(){return properties;}).bind(this));
this.properties.attr = (function(attr,value){
var attr = attr.split('.');
var recursive = function(attr,output,value){
if(attr.length>1){
return recursive(attr.slice(1),output[attr[0]],value);
}else{
if(value!=undefined){output[attr[0]] = value;};
return output[attr[0]];
};
};
return recursive(attr,properties,value || undefined);
}).bind(this)
});
ありがとう!
編集
this.properties.attr
が設定されている場合、ゲッターproperties
は の代わりに変数を返すと思いますthis.properties
。したがって、properties
は直接編集されます。おそらく、ゲッターproperties
からの戻り値を実際の変数とは別のエンティティにすることは可能ですか?