Joyride Posted June 12, 2008 Report Posted June 12, 2008 Ir pašrakstīta XHR wrappera klase (izņēmu ārā visu lieko kodu, lai nejauktu galvu): function Ajax() { var _this = this; // Šeit klasei varam piekļūt ar "this" function checkTimeout() { // ... } this.execute = function() { // Šeit klasei varam piekļūt ar "_this" interval_id = setInterval("???.checkTimeout();", 1000); // Problēma !!! } } Kā lai šeit norāda, kas ir owneris f-jai checkTimeout? "this" tiek uztverts kā parent f-ja "execute", "_this" ir "undefined"...
v3rb0 Posted June 12, 2008 Report Posted June 12, 2008 function Ajax() { this.checkTimeout = function() { console.log("ir"); } this.execute = function() { interval_id = setInterval(function(me){return function(){me.checkTimeout();}}(this), 1000); // un nav problēma !!! } } new Ajax().execute();
Joyride Posted June 12, 2008 Author Report Posted June 12, 2008 v3rb0, paldies, strādā, bet vai varētu paskaidrot, kas tajā rindā notiek vai uzrakstīt kaut kā izvērstāk, savādāk es īsti nesaprotu... function(me) { return function() { me.checkTimeout(); } }(this) // wtf?
v3rb0 Posted June 12, 2008 Report Posted June 12, 2008 closures tas saucās, http://www.jibbering.com/faq/faq_notes/closures.html#clClDo
Recommended Posts