为啥下面的javascript代码执行后,结果是The Window,而不是My Object?代码如下
为什么下面的javascript代码执行后,结果是The Window,而不是My Object?代码如下:
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
alert(this);
return this.name;
};
}
};
alert(object.getNameFunc()()); //The Window
为什么上面的javascript代码执行后,结果是The Window,而不是My Object?
------解决思路----------------------
个人理解
------解决思路----------------------
第一个this:
Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
第二个this:
Object {name: "My Object", getNameFunc: function, getNameFunc1: function}
------解决思路----------------------
this的作用域,代表不同意思。
------解决思路----------------------
注意作用域
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
alert(this);
return this.name;
};
}
};
alert(object.getNameFunc()()); //The Window
为什么上面的javascript代码执行后,结果是The Window,而不是My Object?
------解决思路----------------------
个人理解
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function()
{
return function()
{
//匿名函数,this指向window
var name = this.name;
return name;
}
},
getNameFunc1 : function()
{
//this指向对象本身
var name = this.name;
return function()
{
return name;
}
}
};
alert(object.getNameFunc()());
alert(object.getNameFunc1()());
------解决思路----------------------
第一个this:
Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
第二个this:
Object {name: "My Object", getNameFunc: function, getNameFunc1: function}
------解决思路----------------------
this的作用域,代表不同意思。
------解决思路----------------------
注意作用域
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return this.name;
}
};
alert(object.getNameFunc());