ExtJS 中 new 和 new Ext.create 的区别

Difference between new and new Ext.create in ExtJS

我是 ExtJS 4 的新手(使用 Ext JS4 的项目)

我的问题是'Difference new and new Ext.create'

这些代码显示完全相同的结果(高度、宽度除外)

var panel1 = Ext.create('Ext.panel.Panel', {
    title: 'use Ext.create',
    html: 'use Ext.create',
    height: 100,
    width: 300
})

var panel2 = new Ext.panel.Panel({
    title: 'use new',
    html: 'use new',
    height: 100,
    width: 120
});

var panel3 = new Ext.create('Ext.panel.Panel', {
    title: 'use new Ext.create',
    html: 'use new Ext.create',
    height: 100,
    width: 200
});

我知道 new vs Ext.create(用于动态加载 - 'new' 不支持动态加载)

但是 'new Ext.create' 是什么?它是一种不应该使用的语法吗?

PS : 不熟悉发帖问题。我道歉

请告诉我这个问题是否有问题。

这不是您应该使用的语法。它似乎只是因为 Ext.create 的实施方式而导致相同的结果。但是,如果它被更改,此语法可能无法工作。 new 运算符创建一个新对象,该对象继承自 Ext.create 的原型。该原型是 Function,而不是 Ext.panel.Panel。此外,它将调用 create 的范围从 Ext 更改为这个新对象。碰巧 create 方法没有引用范围(即 "this")。 Ext.create 自己调用 new 和 returns 一个不同的对象,它是您期望的面板,因此此语句中的 new 运算符创建了一个额外的对象,该对象不是面板并且从未使用过。