JavaScript设计模式的一种有趣的封装小技巧
javascript设计模式第一张有一个有趣的实现继承的方法,当然javascript本质上是实现继承,还不是典型意义上的"is-a"的逻辑继承或者说是语义继承。基本的方法就是通过function的prototype属性。
一,很简单的方法
<script type="text/javascript">
<!--
var Anim = function(){};
Anim.prototype.start = function(){alert('start');};
Anim.prototype.stop = function(){alert('stop');};
var obj = new Anim();
obj.start();
obj.stop();
// -->
</script>
二,把prototype的整体赋值-对象字面量法
<script type="text/javascript">
<!--
var Anim = function(){};
Anim.prototype = {
start:function(){alert('start');},
stop:function(){alert('stop');}
};
var obj = new Anim();
obj.start();
obj.stop();
// -->
</script>
注意:对prototype属性整体赋值只能是用户自定义的构造函数,对javascript内置的构造函数是不能的,如Function.prototype= {};
是无效的。
三,把prototype的赋值提到Function对象的prototype来操作。
<script type="text/javascript">
<!--
//对Function构造函数的prototype增加扩张函数
Function.prototype.extend = function(method, func){
this.prototype[method] = func;
return this; //支持链式操作
};
//Anim是新的Function实例,它的[[prototype]]是指向Function.prototype,因此Anim.extend可以通过搜索原型链
//而调用Function.prototype.extend方法,该方法返回this,也就是对象Anim
var Anim = function(){};
Anim.extend('start', function(){alert('start');}).extend('stop', function(){alert('stop');});
var obj = new Anim();
obj.start();
obj.stop();
// -->
</script>
相关文档:
JavaScript时间差计算函数
<mce:script language="javascript"><!--
Date.prototype.dateDiff = function(interval,objDate){
//若參數不足或 objDate 不是日期物件則回傳 undefined
if(arguments.length<2||objDate.constructor!=Date) return undefined;
......
<html>
<head>
<title>测试输入字符</title>
<script language=javascript>
String.prototype.lenB =function(){
return this.replace(/[^\x00-\xff]/g,"**").length;
}
function a() ......
最近的项目开发中 遇到一些需要根据具体情况动态添加javaScript脚本,然后执行脚本 于是收集了一下:
1 在控件的绑定事件中添加脚本 如:在gridview控件的rowdatabind事件中可以实现 指针的选中行不同色显示 可添加脚本
protected void gvEngineerRepairState_RowDataBound(object sender, GridViewRowEventArgs e ......
400多个JavaScript特效大全,包含全部源代码和详细代码说明,不可多得
JavaScript实现可以完全自由拖拽的效果,带三个范例 http://www.sharejs.com/showdetail-501.aspx
javascript实现可以自由拖动的树形列表 http://www.sharejs.com/showdetail-500.aspx  ......