看到一道面試題,提煉出來的結果是
function Foo(){
var getName = function(){console.log(1)}
return this
}
Foo.prototype.getName = function(){
console.log(3)
}
new Foo().getName()
new new Foo().getName()
經過測試,我目前個人覺得new
和()
是配套的關系,就像寫代碼時{([()])}
出現這種多層嵌套時的配套關系,而且是從中心往外去配套。意思就是對于new Foo().getName()
來說,并不是如我最初所想的,等價于
var a = Foo().getName
new a() //這是錯的
而是等價于
var a = new Foo()
a.getName() //這是對的
對于new new Foo().getName()
,其等價于
var a = new Foo()
var b = a.getName
var c = new b()