读书人

JavaScript复建(四):JavaScript编码

发布时间: 2012-10-07 17:28:51 作者: rapoo

JavaScript重构(四):JavaScript编码规则

没有规矩,不成方圆,JavaScript带来了灵活性,也带来了不受控的变量和访问,所以要用规则限制它。一支成熟的团队,还是一支新鲜的团队,规则应当是不一样的,我只是列出一些常见的或者有效的办法,来约束跳跃的开发人员,思维可以任意飞跃,代码却要持续受控。当然,任何规则都是建立在一定的认知基础之上的,面向对象JavaScript的基础是必备的,否则一切无从谈起。

?

变量和方法控制:

模块开发不允许存放独立的全局变量、全局方法,只允许把变量和方法放置到相应模块的“命名空间”中,对此的解释请参见此文。实在心痒了,那么使用匿名函数如何?

借助JQuery基于bind的一系列方法,把行为逻辑独立出来以后,完全可以看到清爽的HTML标签。

DOM对象的访问通常使用id来查找,偶有根据name来查找的,过多次数地、不合理地遍历DOM树是前端性能保持的大忌。

?

CSS的样式控制:

(1)尽量拒绝style="xxx"的写法,主要目的是将样式统一到主题样式表单中,当然主题样式表单也是按模块存放的,对于不同语种的定制和不同风格的切换带来便利。

(2)规约JavaScript对样式的操纵,理想状况下,封装性好的UI可以自由地替换它的样式集合。

?

以上只能算冰山一角,抛砖引玉,实际项目中需要在开发过程中逐步细化和完善。

?

文章系本人原创,转载请注明作者和出处

1 楼 Dev|il 2012-02-10 引用:这里有意做了一件事情,T内部的属性和私有方法使用下划线开头,这样很好地实现了封装(上述代码中如果使用t.instanceNum,是无法访问到这个值的)

楼主你的上述代码中哪里出现聊instanceNum这个属性,如果是_instance_number,那t._instance_number也能够访问 2 楼 RayChase 2012-02-11 Dev|il 写道引用:这里有意做了一件事情,T内部的属性和私有方法使用下划线开头,这样很好地实现了封装(上述代码中如果使用t.instanceNum,是无法访问到这个值的)

楼主你的上述代码中哪里出现聊instanceNum这个属性,如果是_instance_number,那t._instance_number也能够访问
可能是我这里描述不清晰,这里包含两种方式:

一种办法是给类成员变量添加下划线,比如this.userName变成this._user_name,这样表示其为私有变量,外部不要随便访问;

还有一种方式是利用闭包的特点来完成,我补充在文中了:
var User = function(){
var name;
this.setName = function(newName){
name = newName;
};
this.getName = function(){
return name;
};
};
效果:
alert(user.getName()); //abc
alert(user.name); //undefined 3 楼 踏月流星 2012-02-22 RayChase 写道Dev|il 写道引用:这里有意做了一件事情,T内部的属性和私有方法使用下划线开头,这样很好地实现了封装(上述代码中如果使用t.instanceNum,是无法访问到这个值的)

楼主你的上述代码中哪里出现聊instanceNum这个属性,如果是_instance_number,那t._instance_number也能够访问
可能是我这里描述不清晰,这里包含两种方式:

一种办法是给类成员变量添加下划线,比如this.userName变成this._user_name,这样表示其为私有变量,外部不要随便访问;

还有一种方式是利用闭包的特点来完成,我补充在文中了:
var User = function(){
var name;
this.setName = function(newName){
name = newName;
};
this.getName = function(){
return name;
};
};
效果:
alert(user.getName()); //abc
alert(user.name); //undefined
也就是说:你的第一种方式,只是一种人为约定的一种封闭方式。从代码逻辑上来说,并不是真的无法访问了 . 4 楼 踏月流星 2012-02-22 在你的“DOM操纵规则”中,提倡尽量使用bind的方式来给dom绑定事件。个人认为,如果页面中的事件比较多的话,页面加载的时候,这些事件对象就已经加载到了内存中,岂不是对性能会有更大的影响? 5 楼 RayChase 2012-02-22 踏月流星 写道在你的“DOM操纵规则”中,提倡尽量使用bind的方式来给dom绑定事件。个人认为,如果页面中的事件比较多的话,页面加载的时候,这些事件对象就已经加载到了内存中,岂不是对性能会有更大的影响?
目前我还没有了解到JQ的事件绑定会对前端性能带来显著影响,如果你有这方面的了解,欢迎分享。

读书人网 >JavaScript

热点推荐