0 Comments

“类”库

发布于:2014-04-01  |   作者:广州网站建设  |   已聚集:人围观

“类”库

为了便于理解本书中的很多概念,最好先理解“类”的一些基础理论,但实际上开发人员往往是直接就去使用一个“类”库。jQuery 本身并不支持类,但通过插件的方式可以轻易引入类的支持,比如HJS(http://plugins.jquery.com/project/HJS)。HJS 允许你通过给$.Class.create 传入一组属性来定义类

广州网站建设,广州网站设计,广州网站制作,网站建设,网站设计,广州网站建设公司,广州网站设计公司


  1. var Person = $.Class.create({  
  2. // 构造函数  
  3. initialize: function(name) {  
  4. this.name = name;  
  5. }  
  6. }); 

 

可以在创建类的时候传入父类作为参数,这样就实现了类的继承:

  1. var Student = $.Class.create(Person, {  
  2. price: function() { /* ... */ }  
  3. });  
  4. var alex = new Student("Alex");  
  5. alex.pay(); 

 

可以直接给类挂载属性:

  1. Person.find = function(id){ /* ... */ }; 

 

HJS 的API 中同样包含一些工具函数,比如clone() 和equal() :

  1. var alex = new Student("Alex");  
  2. var bill = alex.clone();  
  3. assert( alex.equal(bill) ); 

广州网站建设,广州网站设计,广州网站制作,网站建设,网站设计,广州网站建设公司,广州网站设计公司

HJS 并不是我们的唯一选择,Spine(http://maccman.github.com/spine)同样实现了类,通过直接在页面中引入spine.js(http://maccman.github.com/spine/spine.js)来使用它:

  1. <script src="http://maccman.github.com/spine/spine.js"> </script> 
  2. <script> 
  3. var Person = Spine.Class.create();  
  4. Person.extend({  
  5. find: function() { /* ... */ }  
  6. });  
  7. Person.include({  
  8. init: function(atts){  
  9. this.attributes = atts || {};  
  10. }  
  11. });  
  12. var person = Person.init();  
  13. </script> 

Spine“类”库的API 和我们本章所构建的“类”库API 非常类似。使用extend() 来添加类属性并使用include() 来添加实例属性。通过给Spine.Class 实例传入父类来实现继承。

如果你不想把视野局限于jQuery 的话,那就多关注一下Prototype(http://prototypejs.org/),它包含很多不错的API(http://prototypejs.org/learn/class-inheritance),并且是其他很多类库的灵感来源。

jQuery 的作者John Resig 在他的博客中写过一篇文章,专门讲解如何实现经典的类继承(http://goo.gl/09l0V),这篇文章也值得一读,尤其是当你想挖掘JavaScript 原型系统背后的真相的时候。

标签:
飞机