2

かなりばかげた質問ですが、私はこれについて以前にランダムに考えていましたが、それを試したことはありません...次のようなクラスがあるとしましょう:

function Drug () {
  this.name = '';
  this.type = '';
}

このページの後半で、この Drug にいくつかの値を設定しました。

var drug = new Drug();
drug.name = 'Testing';
drug.type = 'TestType';

次のようなことをせに、この Drug のインスタンスをデフォルトに再起動すると言う簡単な方法はありますか?

var drug2 = new Drug();

ある種のリセット関数のように、内部で作成してDrug実行できdrug.reset();ますか?

私は試しました:this.clear = function () { return new Drug(); }しかし、それはうまくいきません...

4

3 に答える 3

5

あなたはそれを少し考えすぎています。コンストラクターでこれらのプロパティを直接初期化する代わりに、コンストラクinit()ターによって呼び出される、それらを初期化するメソッドを作成します。その後、それを呼び出して、オブジェクトのプロパティを再初期化できます。

function Drug () {
  this.init();
}
Drug.prototype.init = function() {
  this.name = '';
  this.type = '';
}

// Instantiate:
var d = new Drug();
d.name = 'Testing';
console.log(d);
// Drug {name: "Testing", type: ""}

// Re-initialize it
d.init();
console.log(d);
// Drug {name: "", type: ""}

これは確かにあなたがそれを処理できる唯一の方法ではありませんが、頭に浮かぶ最初の方法です.

于 2013-01-05T22:25:47.900 に答える
2

このようにして、後でデフォルト値を再定義したり、追加/削除したりできます

function Drug() {
  this.init();
}

// initializer
(function(obj) {
  obj.prototype.init = function() {
    for ( var k in obj.prototype ) {
      this[ k ] = obj.prototype[ k ];
    }
  }
}(Drug));

// define here all default properties
Drug.prototype.name = '';
Drug.prototype.type = '';



var drug = new Drug();
drug.name = 'Testing';
drug.type = 'TestType';

console.log( drug );
drug.init();
console.log( drug );

ここで試してみてください:http://jsfiddle.net/bukfixart/vzsFw/

于 2013-01-05T22:40:03.943 に答える