new new Foo().getName() 怎么理解

看到一道面试题,提炼出来的结果是

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

你可能感兴趣的:(new new Foo().getName() 怎么理解)