分析:
var getName;
function Foo() {
getName = function() {
console.log(1);
}
return this;
}
function getName() {console.log(5)}
Foo.getName = function() {console.log(2)}
Foo.prototype.getName = function() {console.log(3)}
getName = function() {console.log(4)}
Foo.getName();//obj.fn()==>2
getName();//4
getName = function() {
console.log(1);
}
Foo().getName();==>window.getName()//1
getName();//1
new Foo.getName();==>new (Foo.getName) () //2
new Foo().getName();=====>(new Foo()).getName()
getName = function() {
console.log(1);
}
new Foo()==>{__proto__:Foo.prototype==>{getName:function() {console.log(3)}}}//3
new new Foo().getName(); =====>new ((new Foo()).getName )()
getName = function() {
console.log(1);
}
{__proto__:Foo.prototype==>{getName:function() {console.log(3)}}}//3