书写JavaScript的一些规范(笔记)
1、缩进
在书写JavaScript的时候以空四个来代替TAB(\0x09),理由是因为 {[查看原文]
缩进
缩进的单位为四个空格。避免使用Tab键来缩进(即使现在已经是21世纪了),也始终没有个统一的Tab长短标准。虽然使用空格会增加文件的大小,但在局域网中几乎可以忽略,且在 最小化过程中也可被消除掉。
}
2、关于JavaScript的花括号{},要一个在右上一个在左下呢?
if (someExpression) {
doSomething();
}
else {
doSomethingElse();
}
和
if (someExpression)
{
doSomething();
}
else
{
doSomethingElse();
}
原来这不仅仅是“造型”的问题,还是一个JavaScript的“BUG”。
意思就是JavaScript会自作主张地在一些代码段中插入分号,如下所示:(注意黄底红字的分号)
{
doSomething();
}
else
{
doSomethingElse();
}
假设这个分号加在这个位置,将第一行成为一条空语句,并且让下面的语句产生错误(else找不到就近的if),但还有可能连错误都没有(比如在这个if之前还有一个if的话,else找到了属于它的if,就按照正常但不正确的逻辑执行,违背了作者意图)。
3、Sys.Application.notifyScriptLoaded 在Microsoft Ajax 4.0 中不再被推荐使用了。
4、脚本加载顺序
浏览器对多个脚本的加载顺序是未定义的(随机的),如果要按顺序加载脚本,可以参考 http://webclientguidance.codeplex.com/
5、闭包写法和prototype写法的区别
MyNamespace.MyClass = function MyClass() {
this.myFunction = function() {
// ...code...
}
}
// prototype
MyNamespace.MyClass = function MyClass() {
}
MyNamespace.MyClass.prototype = function() {
myFunction = function() {
// ...code...
}
}
在单个实例var obj = new MyClass()的时候,prototype的写法为了找到obj.myFunction()方法需要先找自己,然后再找prototype chain(原型链),直到找到MyFunction后调用执行,而闭包写法则在没有遍历原型链的时候就已经可以找到方法了,因此prototype的性能上稍微会有损失。
但是在多个实例var obj1 = new MyClass(); var obj2 = new MyClass();的时候,闭包的写法则需要在内存中有两份myFunction的拷贝,而prototype写法则只有一份,因此在多次调用的代码里,推荐prototype的写法。
posted on 2010-03-24 11:46 volnet(可以叫我大V) 阅读(581) 评论(0) 编辑 收藏 举报