0

ゲッターまたはセッターはjavascriptのオブジェクトでどのように機能しますか?

すなわち

Python では、オブジェクトに対して存在しないメソッドを呼び出すと、ゲッターとセッターを介して呼び出しをインターセプトし、ゲッターとセッターから戻ることができます。

JavaScript で同様の機能を実行するにはどうすればよいですか?

https://github.com/Flotype/now/blob/master/lib/client/now.jsは、この機能を何らかの形で実装しています。コツがわかりませんでした。誰でも説明できますか?

4

2 に答える 2

1

同じ機能を作成することは、Javascriptでは事実上不可能です。私の最善の推測は次のようなものです:

var getter = function (propName) { 
    if (propName in this) { 
        return this[propName]; 
    } else { 
        return "no prop"; 
    } 
};

この構文を使用して、任意のオブジェクトでこの関数を呼び出すことができます。

a = { "test": "yes" };
b = {}
console.log(getter.call(a, "test"));
console.log(getter.call(b, "test"));

これは最善の解決策ではありませんが、これ以上の方法はないと思います。

于 2012-08-30T14:46:30.057 に答える
1

1) You can use non-standart mozilla __noSuchMethod__ property.

2) EcmaScript 6 Harmony propose the Proxy object. See Simulating __noSuchMethod__

于 2012-08-30T15:39:39.447 に答える