prototype.js部分源码摘录
来源:互联网 发布:桃源网络硬盘5.8 破解 编辑:程序博客网 时间:2024/03/29 23:03
正如《java与模式》开篇讲的第一句话是‘请接过这枝花’,顿时感到莫名的感动,现在我们也是走着前辈们的路,不妨深入学习下前辈们所给我们的‘这枝花’。
学习程序设计最好的办法就是阅读源代码,如何可以的话,敲敲这些代码。
以下这些代码摘录于prototype.js,这是段非常优秀的js代码,虽然无法直接运行他们,可以参考学习并理解他们:
<script>var Abstract = { };var Try = { these: function() { var returnValue; for (var i = 0, length = arguemnts.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; }};var Class = (function() { function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0; i < properties.length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype; var properties = Object.keys(source); if (!Object.keys({ toString: true}).length) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf") } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[propterty]; if (ancestor && Object.isFunction(value) && value.argumentNames().first() == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); } })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } };})(function() { var _toString = Object.prototype.toString; function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(object) { var type = typeof object; switch(type) { case 'undefined' : case 'function' : case 'unknown' : return ; case 'boolean' : return object.toString(); } if (object === null) return 'null'; if (object.toJSON) return object.toJSON(); if (isElement(object)) return; var results = []; for (var property in object) { var value = toJSON(object[prototype]); if (!isUndefined(value)) results.push(property.toJSON() + ': ' + value); } return '{' + results.join(', ') + '}'; } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { var results = []; for (var property in object) results.push(property); return results; } function keys(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) == "[object Array]"; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return typeof object === "function"; } function isString(object) { return _toString.call(object) == "[object Number]"; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: toJSON, toQueryString: toQueryString, toHTML: toHTML, keys: keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isNumber: isNumber, isUndefined: isUndefined });})();</script>
以下呢,是些正则表达式和nodeType:
正则表达式
1. ? :?用来对前一个字符做0次或1次,但跟在*、+、{}之后,表示原始匹配的最小次数匹配。
2. . :小数点中的“.”号,匹配任何一个单独的字符,但是换行符除外。
3. (x):表示匹配x(x表示一个字符串),而且匹配会被记住。
4. \d:匹配一个数字字符。
5. \D:匹配一个非数字字符。
6:\r:一个回车符。
7:\s:一个空格符。
8:\S:匹配一个非空格符。
9:\w:匹配一个数字、_、字母。
10:\W:匹配一个非数字、_、字母。
节点类型
1. 元素element -->nodeType = 1
2. 属性attr -->nodeType = 2
3. 文本text -->nodeType = 3
4. 注释comments -->nodeType = 8
5. 文档document -->nodeType = 9
- prototype.js部分源码摘录
- js中prototype的理解摘录
- prototype 源码解读 之 prototype.js
- prototype 源码解读 之 prototype.js
- prototype 源码中文说明之 prototype.js
- prototype 源码解读 之 prototype.js
- prototype 源码解读 之 prototype.js
- prototype 源码中文说明之 prototype.js
- prototype 源码解读 之 prototype.js
- prototype 源码解读 之 prototype.js
- prototype.js ,ajax部分使用例子
- prototype.js 源码解读v1.3.1版本
- prototype.js源码解读v1.3.1版本
- prototype.js 源码解读v1.3.1版本
- js 摘录
- 《史蒂夫乔布斯传》部分读书摘录
- 读《断舍离》部分摘录
- 孔令贤博客部分摘录
- C++中利用vector来处理文本中保存的数据
- [window store 8程序开发]获取设备屏幕分辨率
- SAP-ABAP程序发送邮件
- Ubuntu 安装SVN服务器端
- CSDN问答频道4月声望排行榜出炉,既5月奖品预告
- prototype.js部分源码摘录
- 欧洲最大的开源软件盛会网站
- oracle系统表查询
- SAP 发送邮件例子(内部)
- 基于对话框程序用ON_UPDATE_COMMAND_UI更新菜单
- (8)适配器模式
- X86与非X86服务器
- 难题难事是好老师
- 职场升职指南录