あなたがやろうとしているのは、他の言語ではクラス静的メソッドと呼ばれるものです。
Javascriptでそれを行うには、次のように書く必要があります
Class.CONST = 1;
その後、あなたはそれを呼び出すことができますClass.CONST;
のようなインスタンスメソッドでアクセスしようとするとnew Class().CONST
、未定義になります
質問に戻りますが、Class.prototypeのすべてには、new
Class自体ではなく、オブジェクトのインスタンス(つまり、を介して作成されたもの)にのみアクセスできます。なんで?
の実装を検討してくださいnew
Function.method('new', function () {
var that = Object.create(this.prototype);
var other = this.apply(that, arguments);
return (typeof other === 'object' && other) || that;
});
最初に、 uがを介して宣言したObject.create(this.prototype)
ものを継承した新しいオブジェクトを作成し、次に、を呼び出します。これは、変数として使用して、宣言されたClass関数を呼び出すだけです。次に、オブジェクトを返します。Class関数は、を介して作成された新しく生まれたオブジェクトに物事を詰め込む方法として単に使用されていることがわかります。作成されたオブジェクトのみがプロトタイプメソッドにアクセスできます。this.prototype
Class.prototype = { Const : 1 }
this.apply(that, arguments)
that
this
new