我刚接触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:我不熟悉发布问题。我道歉
请告诉我这个问题是否有问题。
答案 0 :(得分:1)
这不是您应该使用的语法。它似乎导致相同的结果只是因为Ext.create的实现方式。但是,如果它被更改,则此语法可能无法工作。 new运算符创建一个继承自Ext.create原型的新对象。那个原型是Function,而不是Ext.panel.Panel。此外,它还会更改从Ext调用create到此新对象的范围。创建方法偶然不参考范围(即“this”)。 Ext.create自己调用new并返回一个与您期望的面板不同的对象,因此该语句中的new运算符创建了一个额外的对象,该对象不是面板且从未使用过。