程序语言只是一个框架,好与不好不是由语言本身所决定对的。而是写程序的人,JS是一个非常调皮的孩子。你可以让他规规矩矩的做事,就如EXTJS框架一样。你也可以让它率性而为。

有个朋友曾经问我,JS中是如何定义内部方法与内部属性的。曾经有人回答说使用闭包去做,的确闭包可以搞定如此的需求。但别忘了JS的指针域是可以任意跳动的。如果你想,那还是可以访问到闭包内属性的。 所以我认识,内部不内部、公开或私有不是由程序而定的。而是程序员,你有没有遵守团队如此的约束。在EXTJS源码中,我们可以看到很多处类似于private的注释。这个注释是告诉我们,该方法或该属性是私有的。我们不该从外部访问它。但实际上仅是个注释而已,你遵守了就私有,不遵守那等于公有。

面对JS语句时,要懂得取巧。其他语言其实也一样。比如 if()语句。

 我们知道IF语句中只要括弧内表达式返回一个非假的值就可以执行。所以我们可以写成这种形式

               if(p=o){alert(p)}

这种形式等同于:

           var p = o

     if(Bollean(p)){

           alert(p)         

     }    

这里如果o返回了一个可以假值,即 null或undefined 或者值可以转换成假时都将不弹出提示。我们要知道 p=o这个表达式是有返回值的。这个返回值就是 p

类似的还有for语句。如: for(var i=0;p=o[i++])   就相当于 for(var i=0;i<o.length;i++){p=o[i]}  这里把三个语句写成了两个也是一样的,因为当p[i]为undefined时第二表达式返回假就会中断循环。这样一个语句就起到了三个做用。

程序语言中这种可以“偷工减料”的还很多,只待你去发现。

做事要思考,偷懒往往也是好事。很多人不喜欢思考,遇到问题就要去问这个问那个,所以这种人不适合写程序。写出来的东西也顶多是照着葫芦画的瓢而已。