JavaScript的new

双杯献酒 2016-05-24 12:02:04
new A.B() 等效 new (A.B)();

然而
new A().B() 等效 (new A()).B();

() 和 . 比 new 优先级高,
那么 new A().B() 应该等效 new (A().B)();

为何会如此呢?
...全文
221 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
KK3K2005 2016-05-25
  • 打赏
  • 举报
回复
老老实实 var a = new A(); a.B(); 类似这样用普通人类逻辑写 很麻烦吗?
  • 打赏
  • 举报
回复
引用 5 楼 iicup 的回复:
竟然没人看懂我的问题么?
是你硬要理解成那样没办法了。。。 new A.B() 只是取A的属性B来当构造函数,其实就是new使用哪个作为构造函数,是new的语法,和有优先级没多大关系
双杯献酒 2016-05-24
  • 打赏
  • 举报
回复
竟然没人看懂我的问题么?
anncesky 2016-05-24
  • 打赏
  • 举报
回复
这是符号优先级问题,好好看看JS的优先级
jiangbai333 2016-05-24
  • 打赏
  • 举报
回复
这种问题,你只要按照符号,把每一步拆开就好看了!
  • 打赏
  • 举报
回复

    var A = function () { }
    A.B = function () { alert('A.B构造函数') }
    A.prototype.B = function () { alert('A实例B方法')}
    new A.B()//是调用A属性B这个构造函数
    new A().B()//实例化A后调用B方法
slwsss 2016-05-24
  • 打赏
  • 举报
回复
new A().B()//new A再调用函数B new (A().B)()//new 函数A的返回值的属性B

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧