看到一道面试题,提炼出来的结果是
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()