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 相关文章推荐
prototype 中文参数乱码解决方案
Nov 09 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
Apr 20 Javascript
jQuery仿Excel表格编辑功能的实现代码
May 01 Javascript
java与javascript之间json格式数据互转介绍
Oct 29 Javascript
javascript浏览器窗口之间传递数据的方法
Jan 20 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
Apr 27 Javascript
浅谈JS之iframe中的窗口
Sep 13 Javascript
JS+HTML5实现图片在线预览功能
Jul 22 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
基于Vue制作组织架构树组件
Dec 06 Javascript
JS实现动态添加外部js、css到head标签的方法
Jun 05 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
Jun 11 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
ThinkPHP写第一个模块应用
2012/02/20 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
浅谈PHP进程管理
2019/03/08 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
jQuery 源码分析笔记(4) Ready函数
2011/06/02 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
2018/03/16 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
Python实现对象转换为xml的方法示例
2017/06/08 Python
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
水毁工程实施方案
2014/04/01 职场文书
主婚人致辞精选
2015/07/28 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
用Python爬取某乎手机APP数据
2021/06/15 Python
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android