欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

求解答2个 js 有关问题

更新时间: 2014-01-05 01:51:26 责任编辑: Author_N1

 

求解答2个 JS 问题
var x = 'global'
function foo(f) {
   var x = 'foo';
   return f;
};
function foo2(){
var x = 'foo2';
return function() { alert([this.x,x])};
}
var bar = foo(function(){ alert([this.x,x])});
var bar2 = foo2();
bar(); //global  global
bar2(); //global  foo2 ????这里为什么是foo2?
这2个定义有什么区别??

var name = 'global';

var ff = {
'name': 'ff',
'say':function(greet){
return this.name + ' and ' + greet;
}
}
var fff = {
'name':'fff',
'method':function(){
return ff.say('method');
},
'method2':function (callback){
     return callback('method2');
    }
}
alert([fff.method(),fff.method2(ff.say),fff.method2(function(greet){return this.name + ' and ' + greet;})]); //这里谁解释后面2个函数调用this为什么指向window??

求解答~~~

--参考方法--
foo2那个调用的是局部变量啊,后面那个你要搞清楚调用callback函数的是谁,是window吧,骚年
--参考方法--
var bar = foo(function(){ alert([this.x,x])}); ==

function foo(f) {
       var oo = f;
   var x = 'foo';
   return oo;
};
f在x前面。


fff.method2(ff.say) 这样看就清楚。
var $a = ff.say;
var $x = $a('method');


上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:51:26
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/2089/
本文WWW.DOC100.NET DOC100.NET版权所有。