0

次のように、プロトタイプ チェーンを使用してオブジェクトを作成する関数を作成しようとしています。

something = object(proto1, proto2, proto3);
// Lookup order is something -> proto1 -> proto2 -> proto3 -> Object.prototype

指定されたプロトタイプをラップして、独自のルックアップ チェーンをオーバーライドし (再利用できるように)、コピー/内部属性のラッピングを最小限に抑えたいと考えています。

オブジェクトのすべての属性アクセスをオーバーライドするために使用できる Javascript/ECMAScript 5 の機能はありますか? __getattribute__(self, attrname)Pythonに似た何か?そうでない場合、どうすればいいですか?オブジェクトのプロパティを (を使用してObject.hasOwnProperty()) 複製する必要がありますか?

4

1 に答える 1

0

JavaScript にはプロトタイプがあるため、次のような構造を使用できます。

// Small utility function
function Object.extend(obj, properties) {
    for (var i in properties) {
        obj[i] = properties[i];
    }
    return obj;
}

// Create a subclass of Object 
function Class3() {}
Class3.prototype = proto3;

// Create a subclass of Class3
function Class2() {}
Class2.prototype = new Class3();
Object.extend(Class2.prototype, proto2);

// Create a subclass of Class2
function Class1() {}
Class1.prototype = new Class2();
Object.extend(Class1.prototype, proto1);

// Instantiate an object whose prototype chain is proto1, proto2, proto3
var something = new Class1();
于 2011-06-29T17:28:04.663 に答える