Prototype使用指南之base.js


Posted in Javascript onJanuary 10, 2007

base.js中包含下面的内容  类的创建与继承: Class.create(): 创建一个类,例如 person=Class.create() Object.extend(destination, source): 把source中方法属性copy到destination(使用for propertyin source),需要注意的是,javascript中除了基本类型(Number, Boolean)外都是引用类型,所以这种copy一般只是copy引用而已,destination和source还是指向同一个方法或对象属性(function array object) 这面向对象的编程中,一般通过Class.create新建一个类,如果这个类继承于领一个类,一般使用Object.extend(class.prototype, parentClass.prototype)或者Object.extend(class.prototype, aparentClassInstance)
Object构造函数的扩展: Object是其他对象实例的构造函数(var a=new Object()),也是所有其他类的父类,对Object直接扩展(注意不是扩展Object.prototype,扩展Object.prototype相当于添加实例方法)相当于为Object类添加静态方法 Object.inspect(object): 调用object的inspect(如果定义了)或toString方法,返回一个对象的字符串表示 Object.keys(object): 返回一个对象的所有属性和方法名称组成的数组, 例如Object.keys(document.body) Object.values(object):返回一个对象的所有属性和方法的值组成的数组, 例如Object.values(docuement) Object.clone(object): 返回一个对象的clone版本,其实是执行Object.extent方法把object中的方法属性copy到一个新对象中,然后返回这个对象
函数邦定: 定义了Function对象的两个方法,bind和bindAsEventListener,这两个方法是一个函数的两个方法,对于java、c#程序员来说,看到这个也许感到很惊讶,因为在他们看来函数只是一个程序语句组织结构而已--->怎么还有方法,而且还可以扩展? 这也是javascript等脚本语言相对于java等一个非常强大的功能,函数也是一个对象,函数名就是这个对象的名称,只要你愿意,你也可以使用new Function(...)来定义函数,所以为函数定义方法也就很正常不过了 这两个函数的主要作用是为了解决使用javascript面向对象风格编程中this的引用问题,在javasctipt中this关键字始终指向调用该函数的对象或者指向使用call,apply方法指定的对象(具体这方面的知识可以自己google一下,以下系列对prototype的介绍也假设读者对javascript语言比较熟悉了,如果不熟悉可以找本javascript权威指南这本书看看) 要理解这个问题首先要理解 始终指向 这个问题,就是this这个关键字比较特殊,不能把他当成一般的变量名看待,最常见的一个错误就是在返回函数的调用中使用this,例如return function(){this.aMethod()}, 当你下次调用这个返回的匿名方法时,这个this引用的内容又指向了调用这个函数的对象了,记住的一点的this是个关键字,不是变量名,不会产生闭包 对Number的扩展(注意num也可以看成对象,其实是在使用的时候系统自动打包成Number对象): toColorPart:把数字转换为可以用于表示color的16进制值:例如 7.toColorPart()=>"07",28.toColorPart()=>"1C" succ: 返回num++, 但不改变num本身的值,其实就是 return this+1 times:对从0到这个数字轮流调用一个函数, 例如function a(n){docuement.write(n)}, 10.times(a), 将显示012345678910, 注意函数也是一个对象,而且与其他对象并没有实质的区别
Try对象: Try对象提供了一个很有趣的功能, 先看一下如下的代码: var Ajax = {   getTransport: function() {     return Try.these(       function() {return new XMLHttpRequest()},       function() {return new ActiveXObject('Msxml2.XMLHTTP')},       function() {return new ActiveXObject('Microsoft.XMLHTTP')}     ) || false;   } } Try对象提供了一个方法these, 这个方法接受一个函数类型的参数列表,然后轮流执行这些函数,当其中一个函数没有产生错误时,就停止执行,并且返回这个函数返回的值,自己慢慢体会吧 PeriodicalExecuter(周期性执行器)对象 这个对象是对setInterval方法的简单封装,使用方法如下 var a=new PeriodicalExecuter(callback, frequency) //callback: 执行的函数名 frequency: 每次执行的时间间隔 a.stop()  

Javascript 相关文章推荐
Javascript Tab 导航插件 (23个)
Jun 11 Javascript
javascript 节点遍历函数
Mar 28 Javascript
JavaScript将相对地址转换为绝对地址示例代码
Jul 19 Javascript
jQuery中;function($,undefined) 前面的分号的用处
Dec 17 Javascript
探寻JavaScript中this指针指向
Apr 23 Javascript
Bootstrap CSS布局之列表
Dec 15 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
Feb 23 Javascript
vue-cli项目无法用本机IP访问的解决方法
Sep 20 Javascript
微信小程序封装的HTTP请求示例【附升级版】
May 11 Javascript
聊聊鉴权那些事(推荐)
Aug 22 Javascript
JavaScript判断数组类型的方法
Oct 23 Javascript
JavaScript中layim之整合右键菜单的示例代码
Feb 06 Javascript
Prototype使用指南之string.js
Jan 10 #Javascript
Prototype最新版(1.5 rc2)使用指南(1)
Jan 10 #Javascript
个人总结的一些关于String、Function、Array的属性和用法
Jan 10 #Javascript
[JS源码]超长文章自动分页(客户端版)
Jan 09 #Javascript
Javascript与vbscript数据共享
Jan 09 #Javascript
In Javascript Class, how to call the prototype method.(three method)
Jan 09 #Javascript
js技巧--转义符"\"的妙用
Jan 09 #Javascript
You might like
PHP版网站缓存加快打开速度的方法分享
2012/06/03 PHP
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
php封装的smarty类完整实例
2016/10/19 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
jquery自定义表格样式
2015/11/23 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
[06:57]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD 选手采访
2021/03/11 DOTA
python随机生成指定长度密码的方法
2015/04/04 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
python利用线程实现多任务
2020/09/18 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
大四学生毕业自荐信
2013/11/07 职场文书
函授生自我鉴定
2014/03/25 职场文书
一帮一活动总结
2014/05/08 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
golang中的struct操作
2021/11/11 Golang