My code:
myobj = new Object();
classes.testegy = Class.extend({
init: function (token) {
console.log("test egy");
setInterval(function () {
console.log('hello');
}, 300);
},
testt: function () {
console.log("luli");
}
});
classes.testketto = Class.extend({
init: function (token) {
console.log("test ketto");
}
});
classes.site = Class.extend({
init: function (token) {
var myobj = new Object();
myobj.lel1 = new classes.testegy();
myobj.lel2 = new classes.testketto();
console.log(myobj);
delete myobj.lel1;
myobj.lel1.testt();
}
});
var class = new classes.site();
If I delete the myobj.lel1 object, it will be deleted, but the setInterval goes in the testegy class. Why? How can I full delete Object? Thanks
edited:
some example, when not use setInterval, use click, and console log.
classes.testegy = Class.extend({
init: function(token){
console.log("test egy");
$(".piii").live("click", function() {
console.log("hello");
});
},
foo: function() {
console.log("pina");
}
});
classes.testketto = Class.extend({
init: function(token){
console.log("test ketto");
}
});
classes.site = Class.extend({
init: function(token){
var myobj = new Object();
myobj.lel1 = new classes.testegy();
myobj.lel2 = new classes.testketto();
console.log(myobj);
delete myobj.lel1;
myobj.lel1 = new classes.testegy();
delete myobj.lel1;
myobj.lel1 = new classes.testegy();
delete myobj.lel1;
myobj.lel1 = new classes.testegy();
}
});
return: 1 click event -> 4x click = 4x console log 🙁 it was created 4 shadow object.
You need to define cleaning function. First, hold the reference to
setInterval:then define cleaning function (in prototype):
and finally call
myobj.lel1.clean()before deleting.EDIT
The problem with the edited code is different. Look at this:
Whenever you initialize new object, this function adds new handler to click event on
.piii. What you have to do is to use this code:outside an object definition. Or you can use
$(".piii").unbind('click').click(/* handler */)insideinit.BTW.
.livemethod is outdated. Use.onnow.