望大礼解答这个疑问,function f(){ return f }

留校_察看 2015-08-29 11:45:57

function f(){
return f
}

当执行new f()的时候,JS引擎发生了什么事?为什么new f() instanceof f 为false?如果是return this那这个表达式就为true;
在我理解看来:
return f 返回了函数指针,指向f函数块;执行new f()的时候其实就是执行new Function();那new f() instanceof Function这样就能说通了。
...全文
219 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2015-08-29
  • 打赏
  • 举报
回复
当构造函数中用return返回的是一个对象时。会用该对象代替构造时所创建的实例对象(js中函数也是对象)。 但是,如果return返回的不是一个对象(比如是数值,字符串或布尔值),就不会代替构造时所创建的实例对象,因为构造函数返回的必须是对象才行。
留校_察看 2015-08-29
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
[quote=引用 楼主 zgxjj 的回复:] 在我理解看来: return f 返回了函数指针,指向f函数块;执行new f()的时候其实就是执行new Function();那new f() instanceof Function这样就能说通了。
这又不是c语言,谁让你动不动过就生搬硬套c预言的概念?javascript那里来的“函数指针”的说法? 既然是返回f,你说说看,此时 f 存在吗? 别扯什么“函数指针”,而是用正规的正规思路,一下子就理解为什么会返回一个类似 undefine 的 未初始化的对象了。而硬套c语言概念,是旁门左道。[/quote] 不懂什么是正规思路,return的是函数本身而非this,何来“类似undefined的未初始化的对象”之说呢?那什么是正规思路望大神赐教。
  • 打赏
  • 举报
回复
引用 楼主 zgxjj 的回复:
在我理解看来: return f 返回了函数指针,指向f函数块;执行new f()的时候其实就是执行new Function();那new f() instanceof Function这样就能说通了。
这又不是c语言,谁让你动不动过就生搬硬套c预言的概念?javascript那里来的“函数指针”的说法? 既然是返回f,你说说看,此时 f 存在吗? 别扯什么“函数指针”,而是用正规的正规思路,一下子就理解为什么会返回一个类似 undefine 的 未初始化的对象了。而硬套c语言概念,是旁门左道。
留校_察看 2015-08-29
  • 打赏
  • 举报
回复
不要停不要沉

87,885

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧