11、通过prototype修改已有对象、晚绑定支持

本文介绍如何通过JavaScript的prototype属性为现有类添加新方法,包括为Number和Object等内置对象添加方法,并展示了方法重写的实现方式。

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

可以用prototype属性为任何已有的类定义新方法 ,就像处理自己的类一样。现为Number添加一个转十六进制的方法:

Number.prototype.toHexString = function(){
    return this.toString(16);
}
var iNum =15;
alert(iNum.toHexString());//f 

如果想给ECMAScript中的每个本地对象添加新方法,必须在Object对象的prototype属性上定义它 。如上一章所述,所有本地对象都继承 了Object对象,所以对Object对象做任何改变,都会反应在所有本地对象中 。例如,如果想添加一个用警告输出对象的当前值的方法,可以采用下面的 代码:

Object.prototype.showValue=function(){
     alert(this.valueOf());
}
var str = 'hello';
var iNum=25;
str.showValue();//hello
iNum.showValue();//25 

这里,String和Number对象都从Object对象继承了showValue()方法,分别在它们的对象上调用该方法,将显示"hello"和"25"。
就像能给已有的类定义新方法一样,也可重定义已有的方法 。现对Function类的toString()函数重写,原有的toString()是返回Function的源代码 。

var fun = function(){
    return 1;
}
alert(fun.toString());//输出上面的源码
Function.prototype.toString = function(){
    return 'code hidden';
}
alert(fun.toString());//code hidden 

 

支持晚绑定

从技术上来说,根本不存在极晚绑定。但javaScript能够在对象实例化后再定义它的方法。例如:

var o = new Object();
Object.prototype.sayHi = function(){
     alert('hi');
}
o.sayHi();//hi 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值