代码如下
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(); //
现在想问的是new Foo()不是可以省略括号写成 new Foo吗,为什么第5问和第6问结果不一样呢, 还有最后一问直接不明白为啥结果是这样的,谢谢各位大神的不吝赐教
i. 关于第5和第6为什么不一样,在这种情况下,带不带括号是有区别的,具体可以看这个。
https://segmentfault.com/q/10...
i. 最后一问
new Foo().getName();
等同于
const a = new Foo();a.getName();
也就是Foo.prototype.getName()
new new Foo().getName();
看作
const A = new Foo().getName; new A();
然后看作
const A = Foo.prototype.getName; new A();
另外,运算符优先级