zepto源码--qsa--学习笔记】的更多相关文章

$.contains(parent,node)  返回值为一个布尔值 ==> boolean parent,node我们需要检查的节点检查父节点是否包含给定的dom节点,如果两者是相同的节点,返回 false.zepto代码实现方式: $.contains = document.documentElement.contains ? function(parent, node) { return parent !== node && parent.contains(node) } :…
先展示init函数,由于笔记本屏幕太小,删掉了部分源码注释,才能在一屏内截图. 当我们调用$()的时候,便会直接调用zepto.init()生成zepto对象,跟jquery生成jquery对象类似.可以在插件中进行覆盖. 定义变量dom 分为5种情况,逐个进行判断. 1.未传入选择器,即没有传入任何参数的情况,直接返回一个空的zepto对象. 2.如果传入字符串类型的选择器,即传入的是css选择器 清除selector参数的前后空格,selector = selector.trim() 然后区…
zepto内部选择器qsa方法的实现. 简述实现原理: 通过判断传入的参数类型: 如果是'#id',则使用getElementById(id)来获取元素,并且将结果包装成数组形式: 如果是'.class',则使用getElementsByClassName(class)获取元素: 如果是'tagName',使用getElementsByTagName(tagName)获取元素: 如果参数是复杂的css选择器,则使用element.querySelectorAll(css选择器)来获取元素. 方法…
文档片段fragment函数默认传递三个参数: html文档片段字符串 name标签 properties额外添加的属性 函数内部实现过程: var dom, nodes, container; 中间是将字符串html转换成符合需求的dom,并返回. if (singleTagRE.test(html)) dom = document.createElement(RegExp.$1); 判断html如果是单标签,直接使用标签名称创建dom元素. 其中的在定义变量时已经预先定义了.并且进行了匹配的…
template <class InputIterator, class ForwardIterator>inline ForwardIterator uninitialized_copy(InputIterator first, InputIterator last,ForwardIterator result) 函数使用示例 #include <algorithm> #include <iostream> #include <memory> #inclu…
zepto的第一个函数,zepto.matches: 作用:用来匹配dom元素是否匹配某css selector. 它为后面的一些高级方法的实现提供了基础支持,比如事件代理,parent, closest等. 进行初始化的判断,如果不存在DOM元素或者css selector,或者非元素节点的话,直接返回,不再进行后续操作. 获取统一接口,监听所有浏览器(IE6-8不支持),需要注意到的是顺序问题,element.matches就是封装之后的函数,可以忽略, 然后优先使用element.webk…
对象继承函数: $.extend(){},默认传递一个参数,需要继承的对象目标.函数展示: 最终实现的过程,需要调用工具函数extend,首先分析extend函数. 默认传递三个参数,继承的目标对象-target,继承的源对象-source,是否为深拷贝-deep 遍历源对象,分两种情况: 1.浅拷贝:只要source[key]有值,就将其值赋值给target对应的key,即target[key]; 2.深拷贝:就是如果源对象的属性值,也是对象或者数组,则进行同样的拷贝操作.以对象为例:{'na…
0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Request(object): """The :class:`Request` object. It carries out all functionality of Requests. Recommended interface is with the Requests function…
ITERATOR 迭代器 template<class InputIterator,class T> InputIterator find(InputIterator first,InputIterator last,const T& value) { while(first != last && *first != value) ++first; return first; } 代码示例 #include <iostream> #include <v…
stl中容器有很多种 最简单的应该算是vector 一个空间连续的数组 他的构造函数有多个 以其中 template<typename T> vector(size_type n,const T& value)为例 vector(size_type n,const T& value)  -> fill_initialize(n,value) -> allocate_and_fill(n,value) 既然是 allocate  and  fill 那么就会调用分配器…