1、创建新方法
可以用prototype属性为任何已有的类定义新方法,就你处理自己的类一样。例如,还记得Number类的toString()方法吗,如果给它传递16,它将输出十六制的字符串。难道用toHexString()方法处理这个操作不是更好吗?
Number.prototype.toHexString=function(){
return this.toString(16);
}
此环境中,关键字this指向Number的实例,因此可以完全访问Number的所有方法,有了这段代码,可实现下面操作。
var iNum=15;
alert(iNum.toHexString()); //outputs “F”
2、重定义已有方法
函数名只是指向函数的指针,因此可以轻易地使它指向其他函数。如果修改了本地方法,如toString()
Function.prototype.toString=function(){
return “Function code hidden”;
};
Function sayHi(){
alert(“Hi”);
}
alert(sayHi.toString()); //outpus “Function code hidden”
这个例子中toString()指向的原始函数怎样了呢?它将被无用存储单元回收程序回收,因为它被完全废弃了。没能够原始函数的方法,所以在覆盖原始方法前,比较安全的做法是存储它的指针,以便以后的使用。有时你可能在新方法中调用原始方法:
Function.prototype.originalToString=Function.prototype.toString;
Function.prototype.toString=function(){
if(this.originalToString().length >100 ){
return “Function too long to display.”;
} else{
return this.originalTString();
}
}
3、极晚绑定
从技术上来说,根本不存在构晚绑定。即能够在对象实例化后再定义它的方法。。在大多数程序设计语言中,必须在实例化对象之前定义对象的方法。不建议使用极晚绑定方法,因为很难过其跟踪和记录。