変数のすべての要求をキャッチするための正しいプロトタイプ宣言は何ですか? myObject は変更されたプロトタイプを持つオブジェクトです。
これは、JavaScript のプロトタイプの継承とはあまり関係がありません。プロトタイプを使用してオブジェクトを作成するにはnew
、コンストラクター関数のキーワードをprototype
プロパティと共に使用するか、 を使用しObject.create
ます。あなたが興味を持っているのは、すべてのプロパティがアクセスできるオブジェクトを構築する方法です…</p>
関数に引っかかるだろう
残念ながら、これは現在の JavaScript では不可能です。特定の名前を持つプロパティ (値または getter/setter を使用) のみを設定できます。キャッチオール動作は現在実装されていませんが、一部のエンジンはProxy
ドラフトをサポートしています。そのためには、プロパティの __noSuchMethod__ 機能に相当するもの、または JS でそれを実装する方法はありますか? を参照してください。、デフォルト値を持つ Javascript 配列 (Python の defaultdict と同等)? またはread の前に未定義の JavaScript プロパティを設定します。
これは、プロパティの代わりに明示的なゲッター関数を使用して、あなたが望むものに最も近いと思います:
function Entity() {
this.data = {position_X:5, foo:"bar", …};
}
Entity.prototype.get = function (name) {
console.log("access on "+name);
return this.data[name];
};
var entity = new Entity;
entity.get("x"); // undefined, but logs "access on x"
entity.get("position_X"); // 5, and logs "access on position_X"
entity.get("foo"); // "bar", and logs "access on foo"