文章目录
最近遇到一个有意思的js相关的题目,看了网上的一些讲解,感觉不是那么靠谱。自己查阅资料后,做了一下总结。
题目
function Foo(){
getName = function(){
console.log(1);
}
return this;
}
Foo.getName = function(){
console.log(2)
}
Foo.prototype.getName = function(){
console.log(3)
}
var getName = function(){
console.log(4)
}
function getName(){
console.log(5)
}
Foo.getName();//2
getName(); //4
Foo().getName(); //1
getName(); //1
new Foo.getName(); //2
new Foo().getName(); //3
new new Foo().getName(); //3
最后的输出结果,我已经在代码的注释中写了,下面我开始对这7个输出结果进行一一分析。
分析
1. Foo.getName()
这个很简单了,取的是构造函数Foo的getName属性
2 .getName
这里涉及到了变量提升的相关知识,我们把代码进行一下更改
var getName = function(){
console.log(4)
}
function getName(){
console.lo