我正在运行三段代码。第一个工作,而第二个和第三个不起作用。我不知道我明白为什么第二和第三不起作用。对象内部对象的范围在对象内的函数内
user2 = {
handle :"mytext",
alertName: function(){
alert(this.handle);}
};
user2.handle; //"mytext"
user2.alertName() // alerts "mytext"
在这里,我明白句柄分配给user2对象,并且是user2对象上的键。因此,当我调用user2.alertName()时,this.handle引用user2.handle,因此打印出正确的值。
但是,为什么不将下面的代码工作的两个版本:
user2 = {
handle :"mytext",
alertName: function(){
alert(handle);}
};
user2.handle; //"mytext"
user2.alertName() // gives error that handle is not defined in the console
和
user2 = {
handle :"mytext",
alertName: function(handle){
alert(handle);}
};
user2.handle; //"mytext"
user2.alertName() //gives undefined in the alert popup
据我了解的范围,处理其在user2的对象被定义应该可用作为user2的子范围的函数。 我在这里错过了一些基本的东西。如果这看起来像一个noob问题,但我认为我知道了,并总是不断回来。我无法在任何地方得到明确的答案,因为当我查找文档时为什么第二个或第三个没有意义。
感谢,并在这里,我向一个重要的点。使用对象名称和'this'是不一样的。我查了下面的答案,以了解不同之处http://stackoverflow.com/questions/25226693/whats-the-difference-between-using-this-and-the-object-name-for-reference-insi。希望它也能帮助其他人 –