JS模拟面向对象全解(六、扩展方法)
来源:互联网 发布:网易云网络连接失败 编辑:程序博客网 时间:2024/05/01 21:56
C#的扩展方法大家都知道不?就是可以为当前环境中的其他对象添加新的方法,即使你手中没有该对象的源代码。
JS就可以用原型来搞定!
Number.prototype.toHexString = function() { return this.toString(16);};var iNum = 15;alert(iNum.toHexString()); //输出 "F"
上面的代码,就为Number对象添加了一个新的方法,toHexString,到十六进制文本。
因为原型属性是该对象所有实例均具有的属性,类似静态,但可以获得this指针。
这样一来,为已有的对象添加原型属性就特别类似C#的扩展方法。其实不仅是类似,他根本就可以实现。
————
再举一个为Array增加indexOf函数的例子:
Array.prototype.indexOf = function (vItem) { for (var i=0; i<this.length; i++) { if (vItem == this[i]) { return i; } } return -1;}var aColors = new Array("red","green","blue");alert(aColors.indexOf("green")); //输出 "1"
————
因为所有对象均源自Object,因此,如果想为所有对象添加一个新方法:
Object.prototype.showValue = function () { alert(this.valueOf());};var str = "hello";var iNum = 25;str.showValue(); //输出 "hello"iNum.showValue(); //输出 "25"
————
同时,利用它也可以重写对象的某函数:
Function.prototype.toString = function() { return "Function code hidden";}function sayHi() { alert("hi");}alert(sayHi.toString()); //输出 "Function code hidden"
上例就利用原型函数的“新换旧”覆盖,实现了对函数代码的隐藏(函数对象的toString会返回函数的实现代码)
————
自此,JS模拟面向对象的教程结束。感谢大家的阅读与支持!
- JS模拟面向对象全解(六、扩展方法)
- JS模拟面向对象全解(四、构造对象)
- JS模拟面向对象全解(三、函数重载)
- JS模拟面向对象全解(五、继承)
- JS模拟面向对象全解(一、类型及传递)
- JS模拟面向对象全解(二、类型与赋值)
- JS模拟栈(面向对象)
- 面向对象(六)
- JS面向对象方法
- c#面向对象(六)----类的方法(一)
- 33. 面向对象的LotusScript(六)之为自定义对象模拟事件
- js 模拟面向对象的方式
- 模拟银行取款ATM(面向对象,构造方法)
- JS面向对象的方法
- js面向对象方法介绍
- C模拟面向对象的方法
- javascript中面向对象的方法模拟
- js面向对象初步探究(上) js面向对象的5种写方法
- __doPostBack的总结
- 12.3 串行通信与重叠I/O
- JS模拟面向对象全解(五、继承)
- 一对多
- Android数据存储
- JS模拟面向对象全解(六、扩展方法)
- Android 系统调用
- android 各种签名
- ajax的理解
- 如何提高单片机系统的抗干扰性能
- MVC+Jquery 的下拉框
- string类实现
- 用android命令创建和更新项目
- SQLServer2005