var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); //The Window
================================================================================
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()()); //My Object
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); //The Window
================================================================================
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()()); //My Object
解决方案 »
- 第一次显示时, 3.2 和 4.2 为什么显示加号,应该是减号才对啊? 书上例子
- 关于导航菜单的问题,很急~~~
- 谁有判断JS运行时间的代码,时间越精细越好!
- 想把日期显示成 yyyy-mm-dd格式的,搞不定了。谢谢!
- 使用<Iframe>...</IFrame>可实现web编辑器的功能.可是如何将用户本次编辑的内容保存,方便下次打开继续编辑呢?
- 有关WEB页的刷新问题!近来拿分........
- 各位,请问大家知道怎么将一个变量从iframe里面传父页面,然后再将父页面刷新。
- 新手提问 classname
- jquery post 的传值问题
- 求大神指点我这个代码哪边有错误吗
- 不在函数里要中断代码执行要怎么写
- struts+jquery报错$("#remotetabs").tabs is not a function什么情况啊?
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
};
}
};//定义了一个变量object,指向了一个对象,对象有一个name属性和一个getNameFunc属性
alert(object.getNameFunc()()); //My Object
var tmp=object.getNameFunc();//调用object的getNameFunc方法,该方法返回一个函数,函数体:
/*
function(){
var that = this;//this,谁调用this指向谁,这里this指向obejct
return function(){
return that.name;
};
}
执行后得到tmp=funciont(){return object.name}
*/
object.getNameFunc()();//执行用object的getNameFunc方法得到的函数,即tmp();
这个执行结果,都是得到返回的getNameFunc函数并执行,对于return function()这种形式,执行的主体都是window,所以this代表window.自然有第一种结果。第二种,就是为了避免this指向window而得不到object内的本地成员变量,所以用var that = this;来保存object.因为对于object.getNameFunc()来说,getNameFunc()里的this指向object.总结一下就是
object.getNameFunc()里的this指向object.
object.getNameFunc()(它返回一个顶级函数到window对象里成为window的成员函数)() 里的this指向window.
有两个key,两个value
key1:name,key2:getNameFunc
Value1:My Object,value2:就是定义的函数。在JS中函数同也是变量,可以赋值的。
//alert(window.name);
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
//类似地
var tmp=object.getNameFunc();
/*
getNameFunc : function(){
return function(){
return this.name;
};
}
tmp=function(){return this.name};//this作用域,还是谁调用this就指向谁,可以试一下下面的代码:
var testOb={name:'test'};
alert(tmp.call(testOb));
*/
alert(object.getNameFunc()());
/*
再看这句代码,可以翻译为alert(tmp());即alert(function(){return this.name}());现在的关键就是这个this指向哪里,还是一样,谁调用就指向谁,这里指向的是window对象,可以试一下,把代码改成
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
alert(this===window);//这里弹出true
return this.name;
};
}
};
也可以看出,在最外层用var 定义一个变量或函数,实际上都是为window添加了属性
*/