1

javascriptで私はします:

var myObject = {
  myBoo: false,
  myMethod: function () {
     console.log("my method: "+ myBoo);
  }
}
console.log("myObject.myBoo=" + myObject.myBoo);
myObject.myMethod();

これは以下を出力します:

myObject.myBoo=false
ReferenceError: myBoo is not defined

myMethodの観点からmyBooが定義されていないのはなぜですか?

ありがとう。

4

4 に答える 4

3

これは、myBooがグローバル変数としてではなく、オブジェクトプロパティとして定義されているためです。myMethodしたがって、関数でそれにアクセスする適切な方法は次のようになります。

console.log("my method: "+ this.myBoo);
于 2012-04-17T11:02:31.443 に答える
2

オブジェクトを参照するには、これを追加する必要があります。

myMethod: function () {
    console.log("my method: "+ this.myBoo);
}

ここにフィドルがあります:http://jsfiddle.net/9xB83/

この http://www.quirksmode.org/js/this.htmlに関するすばらしい記事があります。

于 2012-04-17T11:01:44.970 に答える
1

関数「myMethod」は、関数のコンテキストに存在しないローカル変数myBooにアクセスしようとしています。あなたがするつもりだったのはthis.myBooを使うことです。

于 2012-04-17T11:03:16.507 に答える
1

myBoo はオブジェクトの属性であるため、オブジェクト自体を参照してアクセスする必要があります。

myMethod function() の this.myBoo である必要があります

于 2012-04-17T11:01:54.943 に答える