![51d10b5a5d7e01d0b44670d1152bdaad.png](https://i-blog.csdnimg.cn/blog_migrate/a9023d97197d6712cd4fa7143ac1a135.jpeg)
事情要从偶然间看到的一个面试题说起,大概长这样:
function Foo() {
getName = function () {
alert (1); };
return this;
}
Foo.getName = function () {
alert (2);};
Foo.prototype.getName = function () {
alert (3);};
var getName = function () {
alert (4);};
function getName() {
alert (5);}
//请写出以下输出结果:
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
今天并不是要把整道题讲明白,有兴趣的小伙伴可以自己去了解下:
前端程序员经常忽视的一个JavaScript面试题github.com整道题的每一个考点,上面都说的非常清楚了。我也是看懂了之后才动手总结这篇笔记。主要总结一下我在这道题中对 JavaScript 疏漏的部分。而这部分,不是作用域、不是变量提升、也不是原型链,而是大多是前端工程师都容易忽视的: