锁定老帖子 主题:JSI Side 代码风格与规范
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-29
准备编写JSI的外围元素,先整理一下编码风格和一些约定,欢迎大家讨论。 基本风格
* 基本参照Java代码风格。
编码约定
var Element = window.Element || new Object();
|
|
返回顶楼 | |
发表时间:2008-04-29
每一条都very good
没有任何问题 |
|
返回顶楼 | |
发表时间:2008-04-30
jindw 写道
... ... var Element = window.Element || new Object(); fn&&fn(); ...
对以上几点有不同意见或补充,如下: "在结构中始终使用区块",如果if、for的{}里真的只有一句,不妨省略并与if、for写在一行。这和下边的巧用||、&&一样紧凑易读。 "少用属性",我觉得属性和方法一定是public的,可以供程序中其他模块或最终用户直接使用。不想公开属性或方法的就利用变量作用域做闭包,成为私有变量。 "window.xyz"申明全局变量,和var xyz申明的全局变量不一样,var xyz申明的全局变量是不能用delete window.xyz删除的。一般调试程序的时候可以使用window.xyz来保存某个对象以便跟踪查看。 其他地方完全支持楼主观点! |
|
返回顶楼 | |
发表时间:2008-04-30
事实上 delete window.xyz什么都做不了 哪种都没法删掉
有些时候window.xyz用来动态声明全局变量 不过有JSI的话当然就不需要了 |
|
返回顶楼 | |
发表时间:2008-04-30
关于window.xx
我认为他是完全等价于申明的全局变量的。 这点ECMA里面也有明确说明,变量是某个scope的属性。而scope一般都是无法获取的,但是全局scope例外。他就是window,或者(function(){return this})()。 关于delete; delete 是用来删除属性的,不是删除变量的,所有,我感觉和楼上的陈述刚好相反。 |
|
返回顶楼 | |
发表时间:2008-04-30
s79 写道 "在结构中始终使用区块",如果if、for的{}里真的只有一句,不妨省略并与if、for写在一行。这和下边的巧用||、&&一样紧凑易读。 虽然我依然坚持我自己的风格,但是,我觉得,你的提法也可以接受。 但是,换行的写法,我坚决反对,那样太伤眼睛^_^ s79 写道 "少用属性",我觉得属性和方法一定是public的,可以供程序中其他模块或最终用户直接使用。不想公开属性或方法的就利用变量作用域做闭包,成为私有变量。 同意这个观点。那种下划线前缀的伪私有约定,其实并不怎么漂亮^_^ 不过在JSI下,闭包就不必自己显式申明了。 s79 写道 "window.xyz"申明全局变量,和var xyz申明的全局变量不一样,var xyz申明的全局变量是不能用delete window.xyz删除的。一般调试程序的时候可以使用window.xyz来保存某个对象以便跟踪查看。 反对这种变量申明方式,因为,这个动态性太强,不便于自动工具处理与解析。当能, 在框架级别上还是可以考虑的,比如JSI导入的最后环节其实就是利用了这点。 |
|
返回顶楼 | |
发表时间:2008-04-30
关于delete大家可以做个测试。 以下代码写在<script>最外层,不要写在函数里,我们看看var的作用。 var test="test"; alert(delete test); 显示"false"。 test="test"; alert(delete test);//delete window.test也一样。 显示"true",test不存在了。 window.test="test"; alert(delete test);//delete window.test也一样。 同上。 所以说使用var声明的是一个变量,不能用delete对其操作。但可以用window.test访问之,也可以省略window直接访问。 不使用var,其实是给window添加了一个属性,自然也可以用window.test访问之,也可以省略window直接访问。也可以用delete删除之。 |
|
返回顶楼 | |
发表时间:2008-04-30
csf178 写道 事实上 delete window.xyz什么都做不了 哪种都没法删掉
有些时候window.xyz用来动态声明全局变量 不过有JSI的话当然就不需要了 delete window.xyz 是可以删掉的。问题是IE删不掉。因为在IE中window对象和所有DOM对象一样,无法用delete。 |
|
返回顶楼 | |
发表时间:2008-04-30
hax兄,能吧。我刚还测试来的。
IE5.5/IE6/IE7/FF2/Opera9/Safari3都测了。公司要求这六种浏览器…… |
|
返回顶楼 | |
发表时间:2008-04-30
|
|
返回顶楼 | |