function Foo(){
getName = function(){alert(1)}
return this;
}
Foo.getName = function(){alert(2)}
Foo.prototype.getName = function(){alert(3)};
var getName = function(){alert(4)};
function getName(){alert(5)}
// 请回答下面返回
Foo.getName() // 2
getName() //4
Foo().getName() //1
getName() //1
new Foo.getName()//2
new Foo().getName() //3
new new Foo().getName() //
//emmmmm 居然只有最后一个没回答上来,连续new 就是一个ne w
// 例如 ???为撒子会报错哦!
function Sht(){this.bitch = "yo";return this}
var sht = new new new new new Sht();
希望解释下:
new new Foo().getName() 为撒返回3;
new new new new new Sht(); 为啥报错了
obj.__proto__ === Foo.prototype
obj.getName
就是Foo.prototype.getName
,Foo.prototype.getName
是一个构造函数,被new
调用,执行alert(3)
这里第一次构造(后一个 new )的构造函数是 Foo,第二次构造(前一个 new )的构造函数是
new Foo().getName
,也就是Foo.prototype.getName
。==========================
new Sht()
得到一个普通对象,不是构造函数,再 new (new new Sht()
)就不对了。