0

クラスとして使用する 2 つの関数があります:PersonEye. それ自体でオブジェクトをPerson作成します。Eye後で、ユーザーが Web ページをクリックするたびにイベント ハンドラーを使用して、作成された目のオブジェクトにアクセスしようとします。

function Eye(){
   this.color="Green";
}


function Person() {

   this.name="John";
   this.eye = new Eye();
   //eye=this.eye; // uncomment and everything works!

   document.addEventListener("click", function(){
      console.log(name); // This works

      console.log(eye);  // This doesn't work

   })

}

var person= new Person();

なぜこれが機能しないのですか?2番目の変数を作成するeyeと問題が解決するようですが、その理由はわかりません..

4

2 に答える 2

1

「目」は変数ではなく、オブジェクトのプロパティであるため、機能しません。どのオブジェクトを参照するかを JavaScript に指示するために何もしていません。

thisの値を別のローカル変数に保存する必要があります。

function Person() {
  this.name="John";
  this.eye = new Eye();
  var person = this;

次に、イベント ハンドラーでそれを使用できます。

    console.log(person.eye);
于 2013-04-06T16:36:11.557 に答える