作者:zhanhailiang 日期:2013-01-04
JS可以依赖原型链来实现OO语言中的继承概念。
原型链的基本思想是利用原型prototype让一个引用类型继承另一个引用类型的属性和方法。实现原型链的基本模式如下:
function SuperType() { this.property = true; } SuperType.prototype.getSuperValue = function() { return this.property; }; function SubType() { this.subProperty = false; } // 继承SuperType SubType.prototype = new SuperType(); SubType.prototype.getSubValue = function() { return this.subProperty; };
原型链继承的问题很明显,主要就是包含引用类型值的原型。由此例可知,父类的属性会被所有子类实例所共享。(解决方法可以采用 “借用构造函数”来消除该问题)
接下来我们将利用原型链继承来分析jQuery.sub的实现:
// jQuery.sub可创建一个新的jQuery副本,不影响原有的jQuery对象。 // 有两个具体使用jQuery.sub()的应用场景。 // 1.提供完全没有破坏jQuery原有一切的方法; // 2.用于帮助做jQuery插件封装和基本命名空间。 // 注:jQuery.sub()不会做任何特殊的隔离,所有关于jQuery的sub版本的方法将仍然指向原来的jQuery。 // (绑定和触发仍将通过主jQuery的事件,数据将通过主绑定的元素的jQuery,Ajax的查询和活动将通过主jQuery的运行,等等) jQuery.sub = function() { function jQuerySub( selector, context ) { return new jQuerySub.fn.init( selector, context ); } // this 指向 jQuery jQuery.extend( true, jQuerySub, this ); jQuerySub.superclass = this; // jQuery是jQuerySub的父类 jQuerySub.fn = jQuerySub.prototype = this(); // jQuerySub继承jQuery的方法 jQuerySub.fn.constructor = jQuerySub; // jQuerySub instanceOf jQuerySub === true jQuerySub.sub
下载地址:http://code.google.com/p/freecms/
link根据参数提取链接对象。
参数
说明
siteid
链接分类所属站点id
classId
链接分类id
classPagemark
链接分类页面标识,多个之间用,分隔
pagemark
链接页面标识,多个之间用,分隔
type
类型
1 下拉
2 图片
3 文字
返回值
说明
link
链接对象
示例1
提取下拉链接
<@linkClass siteid="${site.id}" type="1";linkClass>
<select >
<option>${linkClass.name}</option>
<@link classId="${linkClass.id}" ; link>
<option value="${link.url}">${link.name}</option>
</@link>
</select>
</@linkClass>
下载地址:http://code.google.com/p/freecms/
linkClass根据参数提取链接分类对象。
参数
说明
siteid
链接分类所属站点id
type
类型
1 下拉
2 图片
3 文字
返回值
说明
linkClass
链接分类对象
示例1
提取下拉链接分类
<@linkClass siteid="${site.id}" type="1";linkClass>
<select >
<option>${linkClass.name}</option>
</select>
</@linkClass>