Prototype 学习 工具函数学习($方法)


Posted in Javascript onJuly 12, 2009

$
$$
$A
$F
$H
$R
$w
Try.these
document.getElementsByClassName
$方法——被成为瑞士军刀(Swiss Army knife)
If provided with a string, returns the element in the document with matching ID; otherwise returns the passed element. Takes in an arbitrary number of arguments. All elements returned by the function are extended with Prototype DOM extensions.

function $(element) { 
if (arguments.length > 1) { 
for (var i = 0, elements = [], length = arguments.length; i < length; 
i++) 
elements.push($(arguments[i])); 
return elements; 
} 
if (Object.isString(element)) 
element = document.getElementById(element); 
return Element.extend(element); 
}

首先检查传进来的参数长度:

如果长度等于1,则判断传进来的参数是否为String,如果传进来的是String,则调用getElementById方法取得相应的对象,最后让返回的对象继承Element的所有方法,这样返回的对象将可以直接调用Element对象里面定义的各种方法。例如

// Note quite OOP-like... 
Element.hide('itemId'); 
// A cleaner feel, thanks to guaranted extension 
$('itemId').hide();

如果长度大于1,则递归调用$方法(elements.push($(arguments[i]));)就是说传进来的参数可以是多维数组:
$(['A','B',['C','D',['E','F']]]),当然了返回的也是对象数组了。
如果长度等于0,返回undefined,即直接调用alert($())
详细看一下Object.isString方法:
function isString(object) { 
return getClass(object) === "String"; 
} //=====> getClass() 
function getClass(object) { 
return Object.prototype.toString.call(object) 
.match(/^\[object\s(.*)\]$/)[1]; 
}

主要是通过Object对象的内部方法getClass来确定返回的对象是什么类型,在getClass中调用了Object的toString方法,然后通过正则表达式取出表示具体对象的字符串

Object.prototype.toString.call("2222") 返回"[object String]" 取得"String"

Object.prototype.toString.call(2222) 返回"[object Number]" 取得"Number"

Object.prototype.toString.call(/^$/) 返回"[object RegExp]" 取得"RegExp"

这里为什么要用Object的toString方法呢,因为如果直接调用"2222".toString()将返回"2222",也就是说从Object继承而来的对象,重写了toStirng方法,所以这里要调用Object的toString才行。

Javascript 相关文章推荐
jQuery之ajax技术的详细介绍
Jun 19 Javascript
用C/C++来实现 Node.js 的模块(二)
Sep 24 Javascript
使用js实现数据格式化
Dec 03 Javascript
javascript验证邮件地址和MX记录的方法
Jun 16 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
Aug 16 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
Oct 10 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
jQuery简单实现对数组去重及排序操作实例
Oct 31 jQuery
浅谈react-router@4.0 使用方法和源码分析
Jun 04 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 Javascript
JS实现密码框效果
Sep 10 Javascript
解决vue初始化项目一直停在downloading template的问题
Nov 09 Javascript
Prototype 学习 Prototype对象
Jul 12 #Javascript
javascript 动态加载 css 方法总结
Jul 11 #Javascript
checkbox 复选框不能为空
Jul 11 #Javascript
javascript 页面只自动刷新一次
Jul 10 #Javascript
javascript div 遮罩层封锁整个页面
Jul 10 #Javascript
JQuery 实现的页面滚动时浮动窗口控件
Jul 10 #Javascript
javascript 读取xml,写入xml 实现代码
Jul 10 #Javascript
You might like
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
Yii2简单实现多语言配置的方法
2016/07/23 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
js 替换
2008/02/19 Javascript
XmlUtils JS操作XML工具类
2009/10/01 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python 文件和输入输出小结
2013/10/09 Python
Python标准库与第三方库详解
2014/07/22 Python
python 函数传参之传值还是传引用的分析
2017/09/07 Python
python使用tkinter实现简单计算器
2018/01/30 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
Python骚操作之动态定义函数
2019/03/26 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
五年级语文教学反思
2014/01/30 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
小学生评语大全
2014/04/18 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
个人简历自荐信
2014/06/26 职场文书
会计学专业求职信
2014/07/17 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS