“类”库
为了便于理解本书中的很多概念,最好先理解“类”的一些基础理论,但实际上开发人员往往是直接就去使用一个“类”库。jQuery 本身并不支持类,但通过插件的方式可以轻易引入类的支持,比如HJS(http://plugins.jquery.com/project/HJS)。HJS 允许你通过给$.Class.create 传入一组属性来定义类
广州网站建设,广州网站设计,广州网站制作,网站建设,网站设计,广州网站建设公司,广州网站设计公司
- var Person = $.Class.create({
- // 构造函数
- initialize: function(name) {
- this.name = name;
- }
- });
可以在创建类的时候传入父类作为参数,这样就实现了类的继承:
- var Student = $.Class.create(Person, {
- price: function() { /* ... */ }
- });
- var alex = new Student("Alex");
- alex.pay();
可以直接给类挂载属性:
- Person.find = function(id){ /* ... */ };
HJS 的API 中同样包含一些工具函数,比如clone() 和equal() :
- var alex = new Student("Alex");
- var bill = alex.clone();
- assert( alex.equal(bill) );
广州网站建设,广州网站设计,广州网站制作,网站建设,网站设计,广州网站建设公司,广州网站设计公司
HJS 并不是我们的唯一选择,Spine(http://maccman.github.com/spine)同样实现了类,通过直接在页面中引入spine.js(http://maccman.github.com/spine/spine.js)来使用它:- <script src="http://maccman.github.com/spine/spine.js"> </script>
- <script>
- var Person = Spine.Class.create();
- Person.extend({
- find: function() { /* ... */ }
- });
- Person.include({
- init: function(atts){
- this.attributes = atts || {};
- }
- });
- var person = Person.init();
- </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 原型系统背后的真相的时候。