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当构造函数来使用,原来的扩展参数被当成了构造参数,根本没发生函数的扩展,所以报错了

推荐问题