0

JavaScript での「this」キーワードの使用についていくつか質問があります。


  1. を常に使用するとthis、関数オブジェクト全体が RAM メモリにオーバーロードされるのは本当ですか?
  2. 宣言したほうがいい

MyClass = function(){ 
    this.name = "Petter";
    this.age = 12;
    this.toString = function(){
        return "Name: "+this.name + " Age: " + this.age;  
    }
}

それ以外の


MyClass = function(){
    var _this = this;
    _this.name = "Petter";
    _this.age = 12;
    _this.toString = function(){
        return "Name: "+_this.name + " Age: " + _this.age;  
    }
}

または私に何をお勧めできますか?

4

3 に答える 3

0

とにかくRAMにある最初のポイントについては、これを参照すると常に何かが変わる理由はわかりません。

2 番目の点については、オブジェクト this 参照を self や _this などの変数に格納することをお勧めします。これは、Javascript では関数を呼び出すときに、関数のコンテキストを call および apply 関数によって操作できるためです。これの意味は。

だからこれで:

MyClass = function(){ 
    this.name = "Petter";
    this.age = 12;
    this.toString = function(){
        return "Name: "+this.name + " Age: " + this.age;  
    }
}
myObject = new MyClass();
myObject.call({name: 'bob', age: '15'});

行 myObject.call は、toString 内の this への参照を実際に変更するため、「名前: ピーター 年齢: 12」ではなく「名前: ボブ 年齢: 15」が返されます。

于 2013-10-18T15:27:56.360 に答える
0
  1. いいえ、オブジェクトをインスタンス化するときにnewキーワードを使用しないと、各オブジェクト インスタンスに関連付けられたプロトタイプ関数が複製されるという事実を混乱させている可能性があります。

  2. Adam の回答で述べたように、別の変数を追加することで、より多くのメモリを使用しているだけです。慣例により、変数がプライベート インスタンス変数である場合、通常は変数名の前にアンダースコアが付けられます。

于 2013-10-18T15:42:21.613 に答える