论坛首页 Web前端技术论坛

提速javascript开发(一)

浏览 30311 次
该帖已经被评为良好帖
作者 正文
   发表时间:2007-03-11  
jindw 写道
这里所谓的js的private变量,其实就是局部变量。


private和public这样的访问权限的封装在js 脚本语言里,意义应该不是很大吧?


引用

3.2 类继承
禁止写法
prototype继承 万恶之首:目前有很多继承写法,都是直接或者间接使用它。严重破坏封装性。
没法实现多态:只是简单的复用,这种继承意义不大。
apply,或者call 只是复用:简单的在当前对象中,执行对象之外的另一个方法。


这几种javascript的继承写法虽然目前被大量的使用,但是他们的缺点是明显的,因此我们不建议采用这些常见的javascript继承写法。


prototype继承 万恶之首?是不是太武断了?
prototype这个语言本身支持的东西用起来安全性等还是有优势的吧,
比如利用prototype封装实例方法相对楼主的方法能有效的避免ie内存泄露。

楼主实现的继承等功能在利用prototype的基础上应该也能实现吧?
0 请登录后投票
   发表时间:2007-03-11  
支持一下!看的出楼主写的是自己项目的真实感受,感同身受,对于一个团队来讲,养成良好的默契的开发习惯至关重要,条条大路通罗马,选择适合自己团队的一条路就可以!
0 请登录后投票
   发表时间:2007-03-12  
我的原则是没有任何理由去面向对象
写出程序流程,然后注入函数就足够了
0 请登录后投票
   发表时间:2007-03-12  

没有完美的方式。我自己的写法也是有代价的,prototype的代价个人感觉更大。首先在javascript中做出很好的封装性很难!prototype写的继承有个最大的缺点(暂且不说它的封装性),如下。这是目前许多比较优雅的写法。如果我用prototype弄继承,那么代码最好是

  1. function A(){   
  2.        
  3. }   
  4. A.prototype={   
  5. }  

 

  1. function A(){   
  2.        
  3. }   
  4. A.prototype={   
  5. }   
  6.   
  7. function A(){   
  8.   
  9. }   
  10. function B(){   
  11. }   
  12. A.prototype=new B()//或者其它写法都可以,都会面临下面的问题   
  13. A.prototype.x= function(){}//等等其它新增的方法都这样定义。   
  14. /**  
  15. *这样的后果就是封装性不仅,差,写个同样功能的类,也比较长。  
  16. */  

当然有的时候封装性也不太重要。这事上没有绝对的事情,文章中的观点针对的是:发挥js对象的特点而言。甚至有的时候没有必要发挥其对象性的一面,这都是根据需要来用的。

强烈建议大家在表达自己想法时:给些例子。最好再将例子与反对的例子对比下,这样说明的话,理解的直观些

0 请登录后投票
   发表时间:2007-03-12  
建议搂主去看下GOOGLE MAPS API,如果不会破解,可以去看下51DITU API ,看了后你就晓得你说得封装和继承得问题可以得到比较好得解决,而且还有许多JAVA .NET中玩不出得精彩技巧
0 请登录后投票
   发表时间:2007-04-07  
很受启发
0 请登录后投票
   发表时间:2007-04-14  
学习中
  • 大小: 35.5 KB
0 请登录后投票
   发表时间:2007-04-14  
为什么说js不支持多态那,js可是弱类型的。
0 请登录后投票
   发表时间:2007-04-15  
  1. function A(){          
  2.     var locate1 = "1oh";   
  3.     this.locate2 = "2oh";   
  4.     var method1 = function(){   
  5.         alert(locate1);   
  6.     }   
  7.     this.method2 = function(){   
  8.         alert(this.locate2);   
  9.         method1();   
  10.     }                                  
  11. }  

这样的话,在每new一个A的时候,每个对象都是拥有自己的method2,而不是作为prototype存在。

关于public、private可以在开发中作出协议,例如,方法名前用_,表示方法是私有的。

0 请登录后投票
   发表时间:2007-04-15  
sp42 写道
其实,js是一门很好玩的语言,稍花点时间和来点兴趣,就会对这DSL爱不释手,相信能给你带来java、.net无法比拟的乐趣。
p.s如果你玩过dhtml,更能明白我说什么。


yeah! js is an enjoyable language, although the various libs are more pragmatic and productive for real web-development, it's an enlightenment to understand its prototype-based oo mechanism.
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics