永发信息网

fn=function(){ var a=3;return this.a} fn.call(fn)为什么提示无定义。

答案:2  悬赏:0  手机版
解决时间 2021-03-09 11:35
  • 提问者网友:寂寞撕碎了回忆
  • 2021-03-09 06:57
执行fn.call(fn)时,this不是指向fn吗?,fn中已经定义了a,为什么会报错呢
最佳答案
  • 五星知识达人网友:刀戟声无边
  • 2021-03-09 07:57
你好,这是this的作用域的问题。这里的this并不指向fn……而是指向调用它的主体对象。例如:
var o = {myfunc:fn;} //把fn赋值给对象o的myfunc方法
然后你再调用o.myfunc(),则原fn中的this就是引用的这个o对象,不是fn本身,所以此时的this.a就应当是指的o.a。所以当函数fn没有主体对象时,你直接用this.a,当然就是报错了,此时this.a是undefined。
你应该先 fn.a = 3; 再 fn.call(fn),明白了吗
全部回答
  • 1楼网友:风格不统一
  • 2021-03-09 09:15
你说呢...
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯