一、题目
这个题目只要考的是原型链相关的知识
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();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
二、答案
Foo.getName(); // 2
getName(); // 4
Foo().getName(); // 1
getName(); // 1
new Foo.getName(); // 2
new Foo().getName(); // 3
new new Foo().getName(); // 3
三、解析
解析是来自一技术交流群的大佬-Cat哥 我自己做的时候也是错完了,主要是没注意到
Foo()
里的getName
是没有声明的,会变量提升覆盖,要仔细点看!
感谢cat哥的解析!respect!