2012-04-17 12 views
1

JavaScriptで私が行いますブール値が定義されていないのはなぜですか?

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

この出力:myBooがMyMethodはの視点からundefeindされるのはなぜ

myObject.myBoo=false 
ReferenceError: myBoo is not defined 

ありがとうございました。

答えて

3

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

console.log("my method: "+ this.myBoo); 
2

あなたがオブジェクトを参照するために、このを追加する必要があります。http://jsfiddle.net/9xB83/

はここで素晴らしい記事についてこのhttp://www.quirksmode.org/js/this.htmlです:

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

はここでフィドルです。

1

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

がMyMethodは関数でthis.myBooなければならない()

1

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

関連する問題