Study jQuery in a Simplified Way
作者:lifesinger 来源:岁月如歌 发布时间:2010-01-30 12:55:00
学习复杂代码的最好方法是简化:
(function(win, undefined) { var jQuery = function(selector, context) { // jQuery 对象就是 init 函数的一个实例 return new jQuery.fn.init(selector, context); }, document = window.document, push = Array.prototype.push, slice = Array.prototype.slice; jQuery.fn = jQuery.prototype = { init: function(selector, context) { // 选择器 var ret = (context || document).querySelectorAll(selector); // 转换为普通数组 ret = slice.call(ret); // jQuery API 的奥妙全在下面这句,将选择器获取的元素添加到 jQuery 对象中 // 使用 push, 速度飞快(当年担心大量 jQuery 对象实例化的性能问题,根本就不是问题) // 使用 push, 还能自动更新 length 属性 push.apply(this, ret); return this; }, length: 0, // 实例方法 attr: function(name, value) { return access(this, name, value, jQuery.attr); } }; // 这句保证了 init 方法里的 this 拥有 jQuery 实例的方法 jQuery.fn.init.prototype = jQuery.fn; // 静态方法 jQuery.attr = function(elem, name, value) { if (value === undefined) { return elem.getAttribute(name); } return elem.setAttribute(name, value); }; // 神奇的 access, 在实例方法和静态方法中建立了一座桥梁 // 数组批次操作的实现也在这里 function access(elems, key, value, fn) { var length = elems.length; if (value !== undefined) { for (var i = 0; i < length; i++) { fn(elems[i], key, value); } return elems; } return length ? fn(elems[0], key) : null; } win.$ = win.jQuery = jQuery;})(window);
测试页面:study-jquery-in-simplified-way.html (请在非 IE 浏览器下运行)


猜你喜欢
- 导语描述 MySQL 压缩的使用场景和解决方案,包括压缩传输协议、压缩列解决方案和压缩表解决方案。提到 MySQL 压缩相关的内容,我们能想
- 一.打包Flask项目1.1自己写个Flask2.2 下载pyinstallerpip install pyinstaller可选参数示例说
- 问题描述字符串本身作为 bytess = '\xe4\xbd\xa0\xe5\xa5\xbd'解决方案s.encode(
- 最近圣诞节快到啦,CSDN的热搜也变成了”代码画颗圣诞树“,看了几篇博客,发现原博主把一些圣诞树给融合在了一起。我更喜欢树叶🍃更茂盛的感觉,
- 以国内最流行ASP为例,我不知道有多少人会在写代码时想到“容错”这个概念,实际上当我遇到这种事时,也是不了了之。为什么呢,想想最初的意思是认
- 项目中使用的日志库是使用python官方库logging封装的,但是居然一直么有设置日志自动滚动,经常会受到告警说哪台机器磁盘空间又满,清理
- 通过jsonp简单获取接口数据,对了,注意下jsonp方法会自动添加callback<template><div clas
- 1. 使用ioutil读取文本// 全部读取后按换行拆分func ReadFile1(path string) error {fileHan
- <script type="text/javascript"> function MathRand() {
- 今天我们用python+tkinter安装带界面的井字棋,效果如图所示。Tkinter 是 Python 的标准 GUI 库。Python
- 在本文中,我们向您介绍一些提示和技巧,以帮助您更快地编写代码Python的可读性和设计简单性是其广受欢迎的两个主要原因。一些常见的Pytho
- 如何做一个分页程序? 这在ASP中确实容易实现,但需要技巧,看看下面的分页代码和说明: <angu
- 在进行网页抓取的时候,分析定位html节点是获取抓取信息的关键,目前我用的是lxml模块(用来分析XML文档结构的,当然也能分析html结构
- 使用consul四大特性1. 服务发现:利用服务注册,服务发现功能来实现服务治理。2. 健康检查:利用consul注册的检查检查函数或脚本来
- 在python中常看到在定义函数是使用@func. 这就是装饰器, 装饰器是把一个函数作为参数的函数,常常用于扩展已有函数,即不改变当前函数
- 具体代码如下所示:import requestsimport jsonfrom pyecharts.charts import Map, G
- 一、Pytest概念Pytest 是 Python 的一种单元测试框架,与 Python 自带的 unittest 测试框架类似,但是比 u
- 目录1. pgzeropgzero的安装2. 游戏设计的过程3. pgzero基础4. pgzero游戏例子5. 总结6. 参考资料1. p
- 本文实例讲述了Python基于property实现类的特性操作。分享给大家供大家参考,具体如下:Python中的特性是一个函数,但是在使用的
- 形式pandas.Series(data=None, index=None, dtype=None,&nbs