[英]What happens to the reference variable after a Component is destroyed in ExtJS?
ExtJS的新功能。 我有以下代码。
var comp;
console.log('comp is - ' + comp);
comp = Ext.create('Ext.Component', {
listeners : {
beforedestroy : function(comp) {
console.log('beforedestroy .. ');
},
destroy : function(comp) {
console.log('destroy .. ');
}
}
});
console.log('comp is - ' + comp);
console.log('comp id is - ' + comp.getId());
comp.destroy();
console.log('comp is - ' + comp);
console.log('comp id is - ' + comp.getId());
chrome的控制台输出是
comp is - undefined
comp is - [object Object]
comp id is - component-1009
beforedestroy ..
destroy ..
comp is - [object Object]
comp id is - component-1009
看起来即使在销毁组件之后,该变量仍保留着对原始组件的引用。 我期望变量销毁后具有未定义或null的值。 这是正常行为吗?
Ext-JS不可能使您对现有组件的引用无效,因为JavaScript没有类似C ++的引用。
例如:
var a = {b:2};
var b = a;
// a and b both reference `{b:2}`, there is nothing you can do
// to `{b:2}` that would change a or b to be null
您可以使用未记录的isDestroyed
属性检查组件是否被销毁。
comp.isDestroyed // true
您还将注意到该组件已从注册表中删除
Ext.getCmp(comp.id); // undefined
您看到的行为与文档所声称的一致。
尝试通过删除所有事件侦听器,将它们从DOM中删除(如果适用)并调用其destroy函数(如果可用)来破坏传递给它的任何对象。 此方法主要用于Ext.Element和Ext.Component类型的参数,但可以传入Ext.util.Observable的任何子类。可以在单个调用中将任意数量的元素和/或组件传递给此函数,如下所示:单独的参数。
来源-http://docs.sencha.com/extjs/4.2.1/#!/api/Ext - method - destroy
如果您查看源代码,它不会删除任何地方的实际组件。 也就是说,该组件在调用销毁后实际上将是无用的,但这与被垃圾回收的对象不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.