永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-03-09 11:35
执行fn.call(fn)时,this不是指向fn吗?,fn中已经定义了a,为什么会报错呢
最佳答案
你好,这是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),明白了吗
全部回答
你说呢...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
mindmanager软件导出问题
雅加达最高气温为何出现在十月,还有它的气温
你们觉得冷忆寻和幽忆寻这两个名字哪个好听?
俄罗斯公布最大盟友 中国排第二,那第一是谁
下列关于票据贴现的说法,正确的有()。A.票据
如何打造更有质量的人际交往间的谈话?
我有几道大学微机接口的题目,不会做,哪位高
xbox360手柄电池一直在电池仓里装着可以吗?
口上水库地址有知道的么?有点事想过去
有没有可以自定义的打字软件?
toto马桶有没有CW970B这个型号啊
牛有哪些特点
鹿皮毛巾长毛 清洗
施工时所用的小型砌块和产品的龄期不得小于多
如何控制工业循环水中余氯
推荐资讯
基金赎回处于待确认是什么情况?
螃蟹为什么放在水里很容易死
海星属于咸水鱼还是淡水鱼
CAD打开样板图时为什么是两个文档呢?分别为d
投资项目市场风险中,竞争力风险可以分解为(
十分看不起玩王者荣耀的女生,一般玩这游戏的
魔兽世界 布林顿6000怎么获得
绿野大澡堂地址在什么地方,想过去办事
星座是怎么划分的
施工测量作业人员应遵循()的原则,掌握工程测
一品堂专业汽车音响改装赣州旗舰店我想知道这
求清华同方TFTC-B N7刷机教程 刷机包
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?