new 和 函数调用的优先级

为什么第二种报错,https://developer.mozilla.org... MDN上两种优先级好像一样啊

new (Vue.extend({
    mixins: [myMixin]
}))
// 报错 Uncaught TypeError: Cannot read property 'name' of 
// undefined
//  at new Vue.extend (vue.js:3425)
new Vue.extend({
    mixins: [myMixin]
})
阅读 4.3k
2 个回答

仔细比较下这两种区别,便可以解释这个报错

new (Vue.extend({
    mixins: [myMixin]
}))

// 等同于

var Content = Vue.extend({
    mixins: [myMixin]
});

new Content;
new Vue.extend({
    mixins: [myMixin]
})

//等同于

var Extend = Vue.extend;
new Extend({
    mixins: [myMixin]
});

第一种是vue.extend先生成类的构造函数,再new生成对象。

第二种是直接把vue.extend当构造函数来使用,原来的扩展参数被当成了构造参数,根本没发生函数的扩展,所以报错了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题