V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  justyeh  ›  全部回复第 4 页 / 共 4 页
回复总数  72
1  2  3  4  
2019-06-11 17:35:31 +08:00
回复了 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:以前特意研究过这玩意儿,结果还是忘记了不少,话说面试考这个有那么大意义吗,毕竟可以背下来的东西
分子
2019-06-03 14:08:40 +08:00
回复了 freedom1988 创建的主题 推广 [年中赠书] 送 6 本前端真题与解析
分子+1
2019-04-18 15:06:13 +08:00
回复了 sumai 创建的主题 程序员 个人博客如何管理评论
我自己有个博客,评论功能还是后期特意加上的,现在正考虑要不要关掉:

1. 部分沙雕一直用评论框来测试 xss,乐此不疲
2. 对提交没有做限制,个别沙雕同样的评论内容回复上千条,最后无赖直接连库删掉了
3. 本想着评论用来交流来的,结果没几条有营养的内容
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1867 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 00:20 · PVG 08:20 · LAX 17:20 · JFK 20:20
Developed with CodeLauncher
♥ Do have faith in what you're doing.