var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function()
{
return function()
{
return this.name;
};
}
};
alert(object.getNameFunc()());上面这段代码会输出“The Window”,请问这个跟闭包有什么区别?或者如果是闭包的话为什么不是输出My Object?
解决方案 »
- 谁给推荐几款设计风格炫酷的DOM+javascript游戏?
- json 从前台传到后台,然后再传到前台时读不出中文。
- Jquery 中用 $("#div1").load("Untitled-5.html")在IE里看不到
- jquery绑定的事件中怎么调用自定义对象的方法?
- javascript 如何实现新文件 的创建
- 为什么 len =7 而不是6?
- 单击右键在文字旁边显示提示信息
- 高手请进,如何实现下面的web菜单目录???
- 怎么过滤文件后缀<input type="file"> 让他只显示*.jpg和*.gif
- 怎样使网页自动关闭且不出现提示框?
- 跪求一款jquery的幻灯片插件,有缩略图的那种
- 有关于javascript中的正则表达式
object.getNameFunc()() 这个的时候 this是指向window的
function fn(){
this.name = "123"
}
两种调用方式
1,fn(); //this指向window
2,new fn(); //this指向fn本身看楼主的例子
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function()
{
return function()
{
return this.name;
};
}
};
alert(object.getNameFunc()());首先var object = {} 等同于 var object = new Object();
所以他里面的this是绑定到本身对象的,所以当我们改一下例子var object = {
name : "My Object",
getNameFunc : function() {
alert(this.name); //这里this指向object
return function()
{
return this.name;
};
}
};我们继续分析
alert(object.getNameFunc()());//打印出My Object与The Window是不是还是有点不明白?
拆分来看,它等同于
var _fn = object.getNameFunc();alert(_fn());这样就容易分析了
object.getNameFunc();//里面的this绑定的是object本身,所以会打印出My Object
而object.getNameFunc()其实就是return 了 function(){ return this.name;};
所以 _fn 等同于
var _fn = function(){ return this.name;};我们回头看普及的知识
我们就知道_fn()这样调用this指向的是window,所以我们就知道了this.name就是"The Window";
1,fn(); //this指向window,正确来说,应该是绑定到上一级作用域的上下文
2,new fn(); //this指向fn本身
var object = {
name : "My Object",
getNameFunc : function()
{
return function()
{
return this.name;
};
}
};
alert(object.getNameFunc()());红色的返回一个函数
function()
{
return this.name;
};
返回这个函数以后,进行调用,但并不是在object上调用 ,而是在 window上调用
只有在某个对象上调用某个函数,这个函数才指向那个对象