suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – js objektorientiert

Entschuldigung, was ist der Unterschied zwischen dem Hinzufügen von Klammern in der mm-Funktion nach „new“? Warum erhalte ich die gleichen Ergebnisse? Kann ein erfahrener Experte das Prinzip erklären?

扔个三星炸死你扔个三星炸死你2781 Tage vor649

Antworte allen(4)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-06-26 11:00:46

    首先,这种偏向基础的问题要学会查阅官方文档
    文档中有详细说明:new foo 等同于 new foo(), 只能用在不传递任何参数的情况
    当然,也不能完全相信文档,毕竟js的坑。。
    那差别在哪呢?在这
    优先级汇总中有详细说明:new(带参数列表的)的优先级为19,而new(无参数离别)的优先级为18,所以new foo()会先执行

    最后,我记得不久前看到一篇文章讲的就是一个比较恶心的面试题,考的就是.,new f(),new f,new f.g(),new f().g()等等的优先级运算问题,可以自己搜一下看看

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-06-26 11:00:46

    参考 MDN

    new constructor[([arguments])]

    不需要传递参数时,括号()是可选项

    Antwort
    0
  • PHP中文网

    PHP中文网2017-06-26 11:00:46

    var mm = function(val){

    this.m = val

    }
    var a = new mm(1) ;
    console.log(a)
    var b = new mm ;
    console.log(b)

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-26 11:00:46

    如果构造函数不需要参数,加和不加括号没有区别。

    Antwort
    0
  • StornierenAntwort