js构造函数

Viewed 126

偶然看到了这样一道题:

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();//

最后三行代码的执行不是很理解,求大佬解答

1 Answers

倒数第三行:将Foo看作一个对象(函数也是一个对象),这个对象中的getName函数作为构造函数new
倒数第二行:先new Foo 创建实例,然后调用圆形上的getname
倒数第一行:先new foo创建实例,然后new原型上的getname