首页   注册   登录

justyeh

V2EX 第 376512 号会员,加入于 2019-01-10 11:00:20 +08:00
justyeh 最近回复了
1
分母先说
分子!!!!!!!!!!
那我当个分子好了
82 天前
回复了 nikolausliu 创建的主题 问与答 你们跑步时都戴什么耳机?
酷狗,京东上按销量排,一般销量靠前的都不会差,这个我身边也不少人用,还不错
分子
118 天前
回复了 graetdk 创建的主题 推广 没有什么套路,给大家发个红包
看了下时间,天真的以为还有我的份
分子+1
159 天前
回复了 noviceiOS 创建的主题 JavaScript 一道 javascript 面试题求教
Foo.getName();
执行函数的静态方法,输出 2

getName();
重点在于两种声明函数的方法的区别
解析器会先读取函数声明( console.log("5")),并使其在执行任何代码之前可以访问,在任何地方调用都不会有问题;
而函数表达式( console.log("4"))则必须等到解析器执行到它所在的代码行才会真正被执行,提前调用会报错。
这里输出 4

Foo().getName();
执行 Foo 方法导致 window 上的(没有作用域限制,默认是 window ) getName 函数被重新定义
返回的 this 的值取决于执行的位置,此时返回 window,
执行 window.getName()返回 1

getName();
即执行 window.getName(),结果同上

new Foo.getName();
这里我也解释不清楚,调试了一下,和执行属性有关
Foo.getName()先与 new 关键字执行,相当于 new 对象的静态方法
返回 2

new Foo().getName();
在 js 中,对象在调用一个方法时会首先在自身里寻找是否有该方法(对象方法),若没有,则去原型链(原型方法)上去寻找,依次层层递进
这里没有对象方法,执行原型方法,返回 3

new new Foo().getName();
请赐教

PS:以前特意研究过这玩意儿,结果还是忘记了不少,话说面试考这个有那么大意义吗,毕竟可以背下来的东西
分子
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1032 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 11ms · UTC 23:23 · PVG 07:23 · LAX 15:23 · JFK 18:23
♥ Do have faith in what you're doing.