で「ゲッターを返す」ことは可能です:もちろんが、それは私がこのような何かやりたいのjavascript
function x(){
var o = {};
o.__defineGetter__('y', function(){
return new Date();
});
return o.y;
}
var z = x();
console.log(z);
//Wait 1 second
console.log(z); //Date should be one second past the last printing
を、それが返されたときo.yが評価されているので、これは動作しません。私はgetterとして動作する変数を返す方法を探しています。次の例は、このようなことが可能になることを期待しています。
function x(context){
//Bind the getter to the passed in scope
context.__defineGetter__('y', function(){
return new Date();
});
}
x(this);
console.log(y);
//Wait 1 second
console.log(y); //Date is one second past last printing
誰もこれまでこのようなことを試みたことはありますか?
はい、私は、異なる構文を使用して同様の動作をモデル化する他の方法に精通しています。私はこの特殊な構文が特別なシナリオのために働きたいだけです。
おかげで、
クリス
これは受け入れられる回答である必要があります。しかし、関数x()から "valueOf"プロパティを持つオブジェクトを返すほうが簡単です。 "function x(){return {valueOf:function(){...}};}" –
はい、私はより多くの方法と簡単な方法で記述することができます。しかし、私はx()とその中のオブジェクト定義の理由は、oがより多くのメソッドとプロパティを持つことができ、それらはすべてxのプライベートコンテキストで定義されているということです。 x()は、出力されたときに(この例では)時間を表示するだけでなく、o.speak()などを持つこともできます。だから質問のために、答えは文脈を尊重する必要があります不完全または一見無益または間違っている。 – TheBrain
合意。しかし、私が意図したことは、戻りたいオブジェクトとして関数を使用する理由はありませんでした。\ _ \ _ proto \ _ \ _にパッチのあるブラウザがサポートされています。元の質問は関数オブジェクトを返さないので、これは不必要なノイズを追加すると思います。 –