JavaScript之修改对象

本文介绍如何利用JavaScript中的prototype属性为现有类定义新方法或重写现有方法,并探讨了极晚绑定的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每个构造函数都有prototype属性,可用于定义方法,在ECMAScript中,每个本地对象也有个用法完全相同prototype属性。
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、极晚绑定
       从技术上来说,根本不存在构晚绑定。即能够在对象实例化后再定义它的方法。。在大多数程序设计语言中,必须在实例化对象之前定义对象的方法。不建议使用极晚绑定方法,因为很难过其跟踪和记录。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值