var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());这里面的this为什么不是object啊?
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());这里面的this为什么不是object啊?
return this.name;
}返回到全局了,所以this就是window
return this.name;
}这个函数中调用的,所以根据上下文指代应当是window
如果getNameFunc : function(){
return this.name;
}
这样调用时返回的就是这个object了
return this.name;
};
这是个匿名函数的调用,而匿名函数的执行环境具有全局限,所以你在匿名函数调用的this是指向window的。不过把getNameFunc函数作用域中的this对象保存在一个闭包函数能访问的变量里就可以让闭包访问到getNameFunc函数作用域中的this对象了。实现如下:var name = "The Window";
var object = {
name: "My Object",
getNameFunc: function(){
var that = this;
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()());
function(){
return this.name;
}();现在this的作用于就是window了,this指向调用当前函数的对象,默认的对象是全局对象window。所以这里就指向window了。函数调用上下文的上下文现在就是window,自己多研究下吧。this就是 调用当前函数的上下文!或者说当前函数执行的上下文(或者环境或者叫对象也行)
恩,非常对,就是现在函数执行的上下文变了,现在的上下文就是window。this现在就是执行window的。建议看一下http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
看完应该就明白this的用法了。
给个地址,你看完就明白了http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
举个例子啊:
function Top(value){
this.test=value;
};
new Top("hi");
这个时候this指向哪里啊?
这个test又被谁接受啊?
this.test=value;
}
var myObject=new Top("hi");
new Top("hi")必须得加var myObject作为引用,光写new Top("hi")解释器会提示错误,而且也没有任何意义,因为你不能引用它。
这个时候this指的就是myObject,你定义了test为构造函数function Top(value)的参数,并设定值等于value,所以不能说test被谁接受,是参数hi被谁接受。在这里,自然被myObject接受,即结果为myObject.test="hi";
这个对于初学者也是比较难理解的,编程语言中有很多这样的难点,多去想,迟早你会完全理解的,而且会感觉到这种方式是如此巧妙。呵呵!
我也是这么过来的,希望能帮助到你!