Loving Coding & Visual Design
Javascript开发需要namespace和错误调试
做Javascript开发我想最头痛的就是这两方面了:变量的冲突和错误的调试问题。
为了避免在不同js脚本中的变量相互冲突,我们需要用到namespace。下面是一简单的例子:
变量不冲突了,还要确保错误信息的正常反馈,有利于程序的调试,这样才能让Javascript开发做到游刃有余。
常用的错误调试有两种:window.onerror和try{}catch(e){}模块
下面是简单的例子:
onerror的好处在于容易找到错误的地方,但是不兼容主流的浏览器,除了IE和FireFox
try.catch的好处在于兼容主流的浏览器,但是错误的信息不足,造成调试困难
参考调式工具: Javascript Stacktrace
为了避免在不同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'));
最 近 文 章
- JSON.parse是多余的 - Sun, 26 Sep 2010 16:42:16 +0000
- 享受Google AppEngine做Python开发 - Sat, 25 Sep 2010 14:35:10 +0000
- Oauth authorize失效的问题 - Wed, 22 Sep 2010 03:51:00 +0000
- Django模板有特色的几个地方 - Tue, 21 Sep 2010 17:10:58 +0000
- 整理一下在家赚钱的项目 - Fri, 17 Sep 2010 16:11:40 +0000
- Windows7无线网络提示有限的访问权限的问题 - Mon, 13 Sep 2010 12:52:47 +0000
- 从link farmer到blog farmer - Thu, 09 Sep 2010 05:42:44 +0000
- Bash快速备份网站程序 - Tue, 07 Sep 2010 10:21:41 +0000
- 我喜欢的HTML5标签 - Sat, 04 Sep 2010 04:55:03 +0000
- 从香港带奶粉现在只能带两罐? - Fri, 03 Sep 2010 14:43:12 +0000