美文网首页
new new Foo().getName() 怎么理解

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

作者: 汲汲hz | 来源:发表于2017-05-18 16:00 被阅读0次

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

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() 怎么理解

    看到一道面试题,提炼出来的结果是 经过测试,我目前个人觉得new和()是配套的关系,就像写代码时{([()])}出...

  • 原型链总结

    一段简单代码引入 function Foo() {}; var f1 = new Foo(); 1.概念简单理解 ...

  • php引用传递

    以下内容可以通过引用传递: 变量,例如foo($a) New 语句,例如foo(new foobar()) 从函数...

  • new一个函数的过程

    function Foo(){};var f = new Foo(); 这个过程等同于function Foo()...

  • 原型和原型链

    构造函数(new运算符) 一个新对象被创建。它继承自Foo.prototype。分析:new Foo('zhang...

  • 经典Foo和Foo.getName

    输出解释如下: Foo.getName()Foo的静态方法优先级高于方法内部定义,调用Foo.getName(),...

  • foo.getName

    function foo(){ ...

  • promise

    let foo = () => new Promise((resolve, reject) => { let c...

  • Java notes

    lecture 4 Animal foo = new Dog(); // ok override heiachy ...

  • Map转为数组的方法

    let myMap = new Map([[true, 7], [{foo: 3}, ['abc']]]);[....

网友评论

      本文标题:new new Foo().getName() 怎么理解

      本文链接:https://www.haomeiwen.com/subject/ahmsxxtx.html