提速javascript开发(一)

Web开发时,我们可能经常抱怨,javascript。它太耗时间精力,甚至让我们觉得它恶心。服务器端,我们有优秀的java语言和webwork、spring等框架来帮助我们提高效率。而客户端只有灵活、难以掌握的javascript,那么我们的希望在哪呢?但愿下面的内容能够对你有些帮助。
 
1、它是怎样的?
Javascript目前由二块构成:Core(核心部分)+DOM实现部分。(DOM是w3c定义的针对HTML、XML文档编程的一系列接口。通过这些接口,我们可以改变文档结点的结构、样式、内容。实现这些接口的语言可以是java、Python,javascript等。)
 
Core
定义了语法规则,及内置的全局对象(Date、Function等),全局方法(parseFloat),全局属性(NaN,undefined等)
Dom
针对HTML文档与XML文档操作的API
 
2、  慢在哪?
2.1java VS javascript
Java是面向对象的代表性语言之一,面向对象语言是时下比较流行、开发效率高的主流开发语言。 面向对象语言包括几个主要特性:抽象,继承,封装和多态。Javascript本质上不是面向对象的,而是基于对象的。基于对象的语言对上面四个特性 支持很差,或者只支持部分特性。
 
 
抽象
继承
多态
封装
java
具备:类,接口,抽象类四个概念
支持:
通过关键字
Extends,implements实现
支持:
1)表现在对象的方法可以重载
2)子类可以被当作父类处理
支持:
private,
friendly,
protected,
public
四个级别的封装
javascript
仅具备
类,这一个概念
支持很差
通过prototype实现;
Function的apply或call方法间接实现。
不支持
支持很差:仅支持private,
public二个级别
比较结果
1 恶劣的继承导致:无法实现子类与父类之间关系的判断,并且子类无法转化成父类。所以无法根据类的类型处理业务:处理父类的代码,无法处理子类。——扩展性差
2 陈旧的代码书写方式导致:本不好的封装性变的更加差劲。这样对象间的隔离成本增加,内聚性弱。
大大降低了开发效率
 
 
2.2、浏览器的兼容性
Core与Dom部分都存在着浏览器平台的差异性, 进一步降低了开发的效率。
 
3、 开始加速
3.1、加强封装性
提倡的写法
  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. }  
A对象的locate1与method1是private级别的; locate2与method2是public级别的。
优点:封装性好,实现代码变化的隔离。
缺点:代码可读性差。
弥补方式:利用javascript的优秀插件,如:jseclipse。
禁止的写法
  1. function A(){          
  2.     var locate1 = "1oh";   
  3.     var method1= function(){   
  4.         alert(locate1);   
  5.     };                                 
  6. }   
  7. A.prototype={   
  8.     locate2:"2oh",     
  9.     method2:function(){   
  10.         alert(this.locate2);   
  11.     },   
  12.     method3:function(){   
  13.         alert(locate1);   
  14.         method1();   
  15.     }   
  16. }   
  17. var a = new A();   
  18. a.method2();   
  19. a.method3();  
 
优点: 代码可读性好。
缺点:
 
没有全局的私有变量
如果执行 a.method3();根本无法访问变量locate1。
prototype 中的方法是公共的。
a.method2()成功访问,在prototype中定义的方法是public级别;无法在prototype中定义全局的private变量。
总体效果
1) 封装性极其差
2) 代码调用不方便。
 
3.2 类继承
禁止写法
prototype继承
万恶之首:目前有很多继承写法,都是直接或者间接使用它。 严重破坏封装性。
没法实现多态:只是简单的复用,这种继承意义不大。
apply, 或者call
只是复用 :简单的在当前对象中,执行对象之外的另一个方法。
 
这几种javascript的继承写法虽然目前被大量的使用,但是他们的缺点是明显的,因此我们不建议采用这些常见的javascript继承写法。
 推荐写法
例子很长,先给大家一些看完的动力吧,下面是它的优点。
 
代码复用
如果A继承B,那么A可复用B中public级别的资源
单一,多层的继承
B可以继承C,A可以继承B, 不存在A继承B又继承C。
多态
A是父类,B与C是A的子类,如果存在一个方法X,是处理A类的,那么它也能处理B与C类。 扩展性好,容纳了变化:可以处理,将来因业务需求新建的D类。
待 续……[提速javascript开发(二)]
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值