Loving Coding & Visual Design

Javascript开发需要namespace和错误调试

做Javascript开发我想最头痛的就是这两方面了:变量的冲突和错误的调试问题。
为了避免在不同js脚本中的变量相互冲突,我们需要用到namespace。下面是一简单的例子:
var ZED = new function() {
//私有内部变量和函数,无法调用
var privateFunction = function() {
alert('privateFunction');
};
//公有内部变量和函数,可以调用
this.publicFunction = function() {
alert('publicFunction');
};
};

变量不冲突了,还要确保错误信息的正常反馈,有利于程序的调试,这样才能让Javascript开发做到游刃有余。
常用的错误调试有两种:window.onerror和try{}catch(e){}模块
下面是简单的例子:
onerror的好处在于容易找到错误的地方,但是不兼容主流的浏览器,除了IE和FireFox
var arrErrors = new Array();
window.onerror = function (strErr, strURL, strLineNumber){
var strMess = "URL: " + strURL +
"nline number: " + strLineNumber +
"nError Message: " + strErr;
arrErrors.push(strMess);
alert(arrErrors.join("n__________nn"));
return true;
}

try.catch的好处在于兼容主流的浏览器,但是错误的信息不足,造成调试困难
try{
with(ZED){
privateFunction();
}
}catch(e){
alert("Name: " + e.name + "nDesc: " + e.description + "nMsg: " + e.msg);
}

参考调式工具: Javascript Stacktrace
var lastError;
try {
ZED.privateFunction();
} catch(e) {
lastError = e;
}
alert(printStackTrace().join('nn'));



下一页


最 近 文 章

  1. JSON.parse是多余的 - Sun, 26 Sep 2010 16:42:16 +0000
  2. 享受Google AppEngine做Python开发 - Sat, 25 Sep 2010 14:35:10 +0000
  3. Oauth authorize失效的问题 - Wed, 22 Sep 2010 03:51:00 +0000
  4. Django模板有特色的几个地方 - Tue, 21 Sep 2010 17:10:58 +0000
  5. 整理一下在家赚钱的项目 - Fri, 17 Sep 2010 16:11:40 +0000
  6. Windows7无线网络提示有限的访问权限的问题 - Mon, 13 Sep 2010 12:52:47 +0000
  7. 从link farmer到blog farmer - Thu, 09 Sep 2010 05:42:44 +0000
  8. Bash快速备份网站程序 - Tue, 07 Sep 2010 10:21:41 +0000
  9. 我喜欢的HTML5标签 - Sat, 04 Sep 2010 04:55:03 +0000
  10. 从香港带奶粉现在只能带两罐? - Fri, 03 Sep 2010 14:43:12 +0000