現在、私はこの次の例のようJSクラスを宣言しています:クラスの異なるインスタンスを作成します
:今私のクラスは、この例のように見える、function X(a) {
this.x = a;
X.prototype.do = function() {
console.log(x);
}
}
が、私は「この」キーワードを削除したいです
function X(a) {
var x = a;
X.prototype.do = function() {
console.log(x);
}
}
これは、Xクラスのインスタンスが1つの場合に効果的です。私は複数のインスタンスを作成しようとすると、私は次の問題を参照してください。
var x1 = new X(1);
x1.do(); // prints 1
var x2 = new X(2);
x2.do(); // prints 2
x1.do(); // prints 2 instead of 1
という問題は、同じクラスの複数のインスタンスを作成するから私を防ぎます。 誰でもこの問題が発生する理由と回避方法を知っていますか?
最初の例では、 'x'は宣言されていません。そして、コンストラクタ内のプロトタイプを決して変更しないでください。 – Oriol