ExtJS中新增和新Ext.create之间的区别

时间:2017-04-20 02:36:35

标签: javascript extjs extjs4

我刚接触ExtJS 4(使用Ext JS4的项目)

我的问题是'差异新的和新的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
});

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

但是什么是'新的Ext.create'?是不应该使用语法?

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

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

1 个答案:

答案 0 :(得分:1)

这不是您应该使用的语法。它似乎导致相同的结果只是因为Ext.create的实现方式。但是,如果它被更改,则此语法可能无法工作。 new运算符创建一个继承自Ext.create原型的新对象。那个原型是Function,而不是Ext.panel.Panel。此外,它还会更改从Ext调用create到此新对象的范围。创建方法偶然不参考范围(即“this”)。 Ext.create自己调用new并返回一个与您期望的面板不同的对象,因此该语句中的new运算符创建了一个额外的对象,该对象不是面板且从未使用过。