假设我有以下代码(可在此小提琴上使用):
Ext.onReady(function() {
Ext.define('TestBlah', {
extend: 'Ext.panel.Panel',
counter: 0,
counters: [],
initComponent: function() {
alert("counter: " + this.counter); // should show 0
alert("counters: " + this.counters); // should show nothing
this.counter++;
this.counters.push(1);
this.callParent();
}
});
var one = Ext.create('TestBlah');
//one.destroy();
var two = Ext.create('TestBlah');
});
所以,我所做的就是创建一个包含两个私有变量的简单类:counter
(一个int)和counters
(一个数组)。现在,当我创建类时,我希望one
和two
都不会继承其他类。这只适用于counter
。创建two
时,计数器为0,计数器数组为1。即使我在创建one.destroy();
之前添加了two
,它仍然具有计数器的价值。这是个虫子吗?
发布于 2013-11-05 21:29:00
这不是窃听器。当您声明一个类时,所有的东西都会被推到类原型中,这意味着它们在所有实例之间被共享。对于“原始”类型值,它没有任何区别,但是对于数组/对象,这些值将在类的所有实例之间共享。若要修改此行为,请在initComponent
中设置计数器
this.counters = [];
https://stackoverflow.com/questions/19798123
复制相似问题