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 是 undefeind 的?

谢谢。

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

myBoo 是对象的一个​​属性,因此您必须参考对象本身来访问它。

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

于 2012-04-17T11:01:54.943 回答
1

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

于 2012-04-17T11:03:16.507 回答