为什么布尔值未定义?

时间:2012-04-17 10:59:21

标签: javascript undefined undefined-reference

在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

为什么myMoo从myMethod的角度来看是不可取的?

感谢。

4 个答案:

答案 0 :(得分:3)

这是因为myBoo未定义为全局变量,而是定义为对象属性。因此,在myMethod函数中访问它的正确方法是:

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

答案 1 :(得分:2)

您需要添加 this 来引用该对象:

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

这是一个小提琴:http://jsfiddle.net/9xB83/

以下是关于 http://www.quirksmode.org/js/this.html的精彩文章。

答案 2 :(得分:1)

myBoo是对象的属性,因此您必须在引用对象本身时访问它。

它应该是myMethod函数中的this.myBoo()

答案 3 :(得分:1)

您的函数“myMethod”正在尝试访问函数上下文中不存在的局部变量myBoo!你打算做的是使用this.myBoo。