请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么new Foo().getName()是先执行new Foo()而不是先执行Foo().getName()

正在回答

3回答

同学可以看下官方资料:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence,详细讲述了运算符的优先级,new又分为带参和无参两种,尝试理解下,如果不能理解,再找我私聊哈,qq:706569906

0 回复 有任何疑惑可以回复我~
  • 提问者 Scny #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-01-23 11:47:59
  • 是否理解为:如果 . 前面有()就执行,如果此时前面有new,new Foo作为一个表达式整体执行?
    回复 有任何疑惑可以回复我~ 2018-03-09 00:23:21
  • 假凤眼 回复 doing123 #3
    new 带参数和 . 是同级别的,既然同级别,我认为应该是按从左到右的顺序执行,所以就先执行new foo() 在执行 . 后面的代码
    回复 有任何疑惑可以回复我~ 2018-03-13 17:32:50
Sappho 2018-04-22 18:11:25

我也觉得老师讲课过程中间有时会说些误导性的话,最好带上自己的理解。. 和new(带参数)的优先级是一样的,都是19,所以是从左到右执行

3 回复 有任何疑惑可以回复我~
德系大75 2018-03-07 15:54:45

请问解决了吗?我也没搞懂啊

0 回复 有任何疑惑可以回复我~
  • new 带参数和 . 是同级别的,既然同级别,我认为应该是按从左到右的顺序执行,所以就先执行new foo() 在执行 . 后面的代码
    回复 有任何疑惑可以回复我~ 2018-03-13 18:50:16
  • 嗯,我只能这样强制理解了
    回复 有任何疑惑可以回复我~ 2018-03-13 18:53:00
  • 后来我看了一下new运算符,它后面必须跟着一个指定对象实例的类型的类或函数,所以new Foo()算一个整体;而new foo.getName(),其实是new function(){console.log(x)}();
    回复 有任何疑惑可以回复我~ 2018-03-13 19:53:33
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信