Javascript教程:关于深入了解JS的几个问题
它也会跟着改变,他们的对应关系,例如在上面这个函数里arguments[0]对应x,arguments[1]对应y,arguments[2]对应a,看起来似乎是array但是当你typof的时候会发现他们是object对象。对他们的对应关系理解如下例:
DaimaRen.cn © 2009-2010 by Tomie Zhang
function b(x, y, a) { arguments[2] = x; alert(a);//期望是3?但是看上一句,已经被指向了x,所以是1 } b(1,2,3); 第五题 DaimaRen.cn © 2009-2010 by Tomie Zhang
function a() { alert(this); } a.call(null); 这个是call了(我比较头疼的东西,囧,可是大师却说是这5道题目里最简单的),来看下。首先,要搞清楚this指针是指向什么的,Nicholas举的例子: DaimaRen.cn © 2009-2010 by Tomie Zhang
var o= { method: function() { alert(this === o); //true } } o.method(); 在method被呼叫的时候,tihs指向了o,因为它是o下的一个方法,它的上下文是在o中的,而如果它不在o这个object中,那么它将会指向window: DaimaRen.cn © 2009-2010 by Tomie Zhang
function method() { alert(this === window); //true } o.method(); OK,那接下来要知道call是干什么的,话说call是一个比较奇妙的方法,也很容易让人迷糊,官方的解释:
官方解释很容易让人迷糊,Nicholas大湿的解释如下:
那不如看个例子吧: DaimaRen.cn © 2009-2010 by Tomie Zhang
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1); //4 这里其实就是用add的方法替换了sub的方法并且把参数值传进去,等同于 DaimaRen.cn © 2009-2010 by Tomie Zhang
add.call(sub,3,1) == add(3,1) 好了,理解了this指针以及call,那回头看这 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |