`

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

阅读更多

可以用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 
 

 

分享到:
评论

相关推荐

    超级有影响力霸气的Java面试题大全文档

    面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化...

    jquery插件使用方法大全

    Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用户能更方便地处理...

    二十三种设计模式【PDF版】

    关于本站“设计模式” Java 提供了丰富的 API,同时又有强大的数据库系统作底层支持,那么我们的编程似乎变成了类似积木的简单"拼凑"和调用, 甚至有人提倡"蓝领程序员",这些都是对现代编程技术的不了解所至. 在...

    大名鼎鼎SWFUpload- Flash+JS 上传

     SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件上传模式。 [编辑本段]SWFUpload的主要特点  * 可以...

    java 面试题 总结

    1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括...

    asp.net知识库

    HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的...

    《程序天下:JavaScript实例自学手册》光盘源码

    16.12 判断表单是否已修改 16.13 判断控件的类型 16.14 密码强度检查 16.15 身份证的验证 16.16 JavaScript生成验证码 16.17 JavaScript生成验证码(二) 第17章 进度条、滚动条特效处理 17.1 使用符号制作的进度条 ...

    程序天下:JavaScript实例自学手册

    16.12 判断表单是否已修改 16.13 判断控件的类型 16.14 密码强度检查 16.15 身份证的验证 16.16 JavaScript生成验证码 16.17 JavaScript生成验证码(二) 第17章 进度条、滚动条特效处理 17.1 使用符号制作的进度条 ...

    js使用小技巧

    对象绑定事件 document.all.xxx.detachEvent("onclick",a); 插件数目 navigator.plugins 取变量类型 typeof($js_libpath) == "undefined" 下拉框 下拉框.options[索引] 下拉框.options.length 查找对象 ...

Global site tag (gtag.js) - Google Analytics