我給出了下面簡化的JavaScript問題。面向對象的JavaScript鎖
var PROJ=(function(){
var tags={},
var lock=true;
function onLoadComplete(){}
this.Tag = function(userConfig,callBack){
function loadConfig(){
lock=false;
/* Do something privately having lock with me */
lock=true;
}
this.load(){
if(lock) loadConfig();
else setTimeout(load,1000);
// PROBLEM is this(above) load is calling OUTER load..!
}
return this;
};
this.load(){
var cb=onLoadComplete;
tags[uniqueID]=new Tag(userConfig,cb);
tags[uniqueID].load();
}
}).load();
我想在這裏實現JavaScript鎖。三個JavaScript標籤對象被創建。 [新標籤()]這些對象共享和修改PROJ中的一些公共數據。
我想通過執行標籤釋放鎖定時訪問公共數據。 setTimeout()中提到的這個負載正在調用PROJ的load()。
您應該解決您的代碼。有語法錯誤(這些{}}括號可能會被瀏覽器忽略,所以你不會看到它),並且沒有'load'函數的定義。 – Groo 2011-12-29 18:44:18
@Umesh Groo和FelixKing都聲明,你的代碼在合成上是不正確的,所以我們只能猜測你的問題。儘管這是從一個更大的背景中切割出來的,但請讓它自我一致並且合理正確,否則你得到的答案只會是黑暗中的一個鏡頭。 – chuckj 2011-12-29 18:52:36