JavaScript学习笔记——扩展类
2015-09-24 17:13
639 查看
我们在开发过程中,JavaScript内置的类所提供的动态方法和动态属性不满足我们的需求。这时,我们可以通过"prototype"属性给自定义类添加方法和属性或者扩展原有的类中的方法和属性。
类名.prototype.方法名 = function([param1],[param2],....[paramn]) {
.................
}
[param1],[param2],....[paramn]这些参数都是可选的
使用这种方式给类添加的扩展方法都是动态的,动态方法是针对类的实例对象的,所以调用必须要用"对象.方法名"的形式去调用,不能用"类名.方法名"的形式去调用!
1.1、使用Prototype扩展String类
String类是JavaScript内置的一个类,但是这个String类没有quote方法,此时就可以使用String类的prototype属性去扩展String类了,为String类添加一个实例方法(动态方法),这样每一个String类对象就都有quote方法了,这就达到了将String类扩展的效果,增强了String类的使用。
测试String类新添加的quote方法
测试结果:
这里要注意的是,几乎很少有人去给Object的prototype添加方法,因为那会影响到所有的对象,除非在你的架构中这种方法的确是所有对象都需要的。
类名.方法名 = function([param1],[param2],....[paramn]) {
.................
}
[param1],[param2],....[paramn]这些参数都是可选的
使用这种方式给类添加的扩展方法都是静态的,动态方法是针对类的实例对象的,所以调用必须要用"对象.方法名"的形式去调用,而静态方法是针对类的,用"类名.方法名"的形式去调用!
C#中的String类有一个静态的Format方法非常强大,在拼接字符串时特别方便,JavaScript的String类并没有Format方法,但是我们可以去扩展String类,为String类添加类似C#中的String类的静态的Format方法
范例:扩展String类,添加Format静态方法,模仿C#中的String.Format方法
测试为String类扩展的Format静态方法
运行结果:
本文参考:http://www.cnblogs.com/xdp-gacl/p/3702898.html
一、扩展JavaScript内置类,添加动态方法
语法格式:类名.prototype.方法名 = function([param1],[param2],....[paramn]) {
.................
}
[param1],[param2],....[paramn]这些参数都是可选的
使用这种方式给类添加的扩展方法都是动态的,动态方法是针对类的实例对象的,所以调用必须要用"对象.方法名"的形式去调用,不能用"类名.方法名"的形式去调用!
1.1、使用Prototype扩展String类
String类是JavaScript内置的一个类,但是这个String类没有quote方法,此时就可以使用String类的prototype属性去扩展String类了,为String类添加一个实例方法(动态方法),这样每一个String类对象就都有quote方法了,这就达到了将String类扩展的效果,增强了String类的使用。
/*扩展为String类,为String类增加quote(两边加字符)方法*/ String.prototype.quote = function(quotestr) { if (!quotestr) { quotestr = "\""; } return quotestr + this + quotestr; };
测试String类新添加的quote方法
alert("abc".quote()); alert("abc".quote("|"));
测试结果:
这里要注意的是,几乎很少有人去给Object的prototype添加方法,因为那会影响到所有的对象,除非在你的架构中这种方法的确是所有对象都需要的。
二、扩展JavaScript内置类,添加静态方法
语法格式如下:类名.方法名 = function([param1],[param2],....[paramn]) {
.................
}
[param1],[param2],....[paramn]这些参数都是可选的
使用这种方式给类添加的扩展方法都是静态的,动态方法是针对类的实例对象的,所以调用必须要用"对象.方法名"的形式去调用,而静态方法是针对类的,用"类名.方法名"的形式去调用!
C#中的String类有一个静态的Format方法非常强大,在拼接字符串时特别方便,JavaScript的String类并没有Format方法,但是我们可以去扩展String类,为String类添加类似C#中的String类的静态的Format方法
范例:扩展String类,添加Format静态方法,模仿C#中的String.Format方法
// ---------------------------------------------------------------------- // <summary> // 扩展String类,添加Format静态方法,模仿C#中的String.Format方法 // </summary> // <returns>str</returns> // ---------------------------------------------------------------------- if (!String.Format) { String.Format = function () { if (arguments.length == 0) { return null; } var str = arguments[0]; if (arguments[1] instanceof Array) { var arr = arguments[1]; for (var i = 0; i < arr.length; i++) { var re = new RegExp('\\{' + i + '\\}', 'gm'); str = str.replace(re, arr[i]); } } else { for (var i = 1; i < arguments.length; i++) { var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm'); str = str.replace(re, arguments[i]); } } return str; } }
测试为String类扩展的Format静态方法
var str="我是{0},我在总结{1}和{2}的学习,我很喜欢{3}这2门语言!"; //使用"类名.方法名"的形式去调用类的静态方法 str = String.Format(str,"孤傲苍狼","java","JavaScript","'java'和'JavaScript'");//把str中的占位符{0},{1},{2},{3}用具体的内容替换掉 alert(str);
运行结果:
本文参考:http://www.cnblogs.com/xdp-gacl/p/3702898.html
相关文章推荐
- knockoutjs foreach array绑定 表格 下拉框绑定
- js原型链及继承
- 在jsp中应用EL表达式取内置对象的值
- DFS 2676POJSudoku数独
- JSTL 核心标签库 使用
- 【js】获得项目路径
- Json对象与Json字符串
- js中相等性问题
- JS与Native交互
- 将String格式XML转换成JSON
- JS模拟实现Select效果代码
- [转] javascript对数组的操作
- js 通过身份证识别生日、年龄、性别
- JS设计模式-单例模式
- js判断页面出现滚动条
- AJAX跨域请求之JSONP获取JSON数据
- 工作中用到的Web技术
- JSApi分享
- JavaScript:隐式原型
- js中substr,substring,indexOf,lastIndexOf的用法小结