0

たとえば、これが私の「Hello」マシンです。

hello_machine = new HelloMachine;

この時点で、誰かがのプロパティにアクセスしようとするとhello_machine、次のことが起こります。

hello_machine.fred;
hello_machine.greetings(); // output: Hi, fred!

hello_machine.george;
hello_machine.greetings(); // output: Hi, george!

アクセスしようとしているプロパティに関係なく、これが自動的に行われるようにしたいと思います。ハードコーディングされたものは必要ありません

これは私が呼び出したい関数です:

function set_buddy(name) {
  buddy = name;
}

そして、挨拶は次のようになります。

function greetings() {
  alert('Hi, ' + buddy);
}

明らかな解決策は、これを行わないことです。これはひどい慣習であり、Javascriptの動作の非常に基本的な方法を変更します。しかし、私はこの種の行動が素晴らしいと思われる立場にいます。

私の腸はこれが不可能であると私に言います、そしてインターネットは私にその事実を思いとどまらせることができませんでした(私の頭は私が尋ねるのはばかだと私に言います)。しかし、私はJavascriptが気まぐれな愛人であることを知っており、この機能が存在していても驚かないでしょう。したがって、この動作を実現するために実装できるハックを誰かが知っているなら、きっとそれをいただければ幸いです。

4

1 に答える 1

2

残念ながら、プロキシなしではこれを行うことはできません:http ://soft.vub.ac.be/~tvcutsem/proxies/

まだ広くサポートされていません。程遠い。

呼び出したいプロパティが事前にわかっている場合Object.define_propertyは、もう少し広くサポートされているgetterメソッドを宣言できます。ただし、事前に呼び出されるプロパティを知らなければ、プロキシなしでそれらをインターセプトする方法はありません。

于 2012-05-02T20:15:04.700 に答える