#!/usr/local/bin/node //事前準備 var windowPrepareTerminatedCb = {}; var windowPrepareTerminatedCbTemp = {}; var IdList = {}; //IdList判定の関数 function _decisionIdList(keyId, func){ var isAssignedCb = true; //Cbへの代入可否フラグ var isAssignedCbTemp = true; //TempCbへの代入可否フラグ if(Object.keys(IdList).length){ //IdListの長さで、IdListに値が入っているかどうかを判定 for(var key in IdList){ if(key === keyId){ //Idの一致判定 isAssignedCb = false; for(var i = 0 ; i < IdList[key].length; i++){ //各Idが持つ関数名に対して一致判定 if(IdList[key][i] === func.name){ isAssignedCbTemp = false; } } } } } if(isAssignedCb){ //Id追加とCb代入 IdList[keyId] = []; //IdをキーとしてIdListに追加 IdList[keyId].push(func.name); //関数名を追加 windowPrepareTerminatedCb[keyId] = func; isAssignedCbTemp = false; //新規追加の場合、CbTempには代入しない } if(isAssignedCbTemp){ //windowPrepareTerminateCbTemp代入 IdList[keyId].push(func.name); //関数名を追加 windowPrepareTerminatedCbTemp[keyId] = func; //関数の退避 } } //window function windowPrepareTerminated(index){ var assign_windowPrepareTerminatedCb = function assign_windowPrepareTerminatedCb(){}; _decisionIdList(index, assign_windowPrepareTerminatedCb); } //deleteFrame function _deleteFrame() { var assign_deleteFrameCb = function assign_deleteFrameCb(){}; _decisionIdList("device", assign_deleteFrameCb); } //deleteFrameSub //関数実行でSubを削除 function _deleteFrameSub() { var assign_deleteFrameSubCb = function assign_deleteFrameSubCb(index){ for(var key in IdList){ if(key === "Sub"){ //IdListに同じIdがあるか判定 delete IdList[key]; //Idリストから削除 delete windowPrepareTerminatedCbTemp[key]; //関数を削除 } } }; _decisionIdList("Sub", assign_deleteFrameSubCb); } //Idリスト出力 var printing = function(){ for(var key in IdList){ console.log(key+" : "+IdList[key][0]); if(IdList[key][1]){ console.log(key+" : "+IdList[key][1]); } } console.table(IdList); } /* 1 */ _deleteFrame(); windowPrepareTerminated("device"); printing();