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からの戻り値を実際の変数とは別のエンティティにすることは可能ですか?