从这篇起,在没有介绍到各类插件之前,后面将陆续介绍zepto对外暴露的核心方法.即$.fn={}里面的所有方法的介绍.会配合zepto的API进行介绍. 其实前面已经介绍了几个,如width,height,prepend等等,今天开始的是zepto源码里面,明确的封装在$.fn对象里面的方法. 本篇介绍的是与类数组(NodeList)操作相关的各种方法: forEach,reduce,push,sort,splice,indexOf,concat,map,slice,toArray,each,f…
从相对比较简单的说起: 1.$.grep  获取一个新数组,新数组只包含回调函数中返回 true 的数组项. 调用javascript中数组原生函数filter,对elements进行过滤,保留回调函数返回值为真的数组项. 2.$.map  通过遍历集合中的元素,返回通过迭代函数的全部结果,null 和 undefined 将被过滤掉. 刚开始使用的时候会对$.map和$.each产生一定的误解.从一定程度上来书,两者都是对集合中的元素进行遍历. 可以遍历数组和键值对的集合,$.map返回的是一…
expando:生成唯一JQ字符串(内部使用) noConflict():防止冲突 isReady:DOM是否加载完成(内部) readyWait:等待多少文件的计数器(内部) holdReady():推迟DOM触发 ready():准备DOM触发 isFunction():是否为函数 isArray():是否为数组 isWindow():是否为window isNumeric():是否为数字 type():判断数据类型 isPlainObject():是否为对象自变量 isEmptyObjec…
1.compact 删除数组中的空元素(不是空字符串).undefined.null 在定义变量时,定义过filter = emptyArray.filter,即调用javascript原生的数组处理函数filter,对传入的数组遍历,返回不包含空元素.undefined.null的新数组. 2.flatten 数组扁平化 通过调用$.fn.concat处理类似[1,2,[3,4],5]的扁平化,变为[1,2,3,4,5],但是只能处理一层的数组嵌套,不能处理类似[1,[2,3,[4,55[6,…
数组方法 定义 var emptyArray = [] concat = emptyArray.concat filter = emptyArray.filter slice = emptyArray.slice zepto 一开始就定义了一个空数组 emptyArray,定义这个空数组是为了取得数组的 concat.filter.slice 方法 compact function compact(array) { return filter.call(array, function(item)…
数组方法 定义 var emptyArray = [] concat = emptyArray.concat filter = emptyArray.filter slice = emptyArray.slice zepto 一开始就定义了一个空数组 emptyArray,定义这个空数组是为了取得数组的 concat.filter.slice 方法 compact function compact(array) { return filter.call(array, function(item)…
虽然最近工作中没有怎么用 zepto ,但是据说 zepto 的源码比较简单,而且网上的资料也比较多,所以我就挑了 zepto 下手,希望能为以后阅读其他框架的源码打下基础吧. 源码版本 本文阅读的源码为 zepto1.2.0 阅读zepto之前需要了解 javascript 原型链和闭包的知识,推荐阅读王福朋的这篇文章:深入理解 Javascript 原型和闭包,写得很详细,也非常易于阅读. 源码结构 整体结构 var Zepto = (function () { ... })() windo…
Zepto源码分析(一)核心代码分析 Zepto源码分析(二)奇淫技巧总结 目录 * 前言 * 短路操作符 * 参数重载(参数个数重载) * 参数重载(参数类型重载) * CSS操作 * 获取属性值的方法 * 获取属性值的方法 * Boolean操作 * 快速转换成Boolean * 日期操作 * 快速获取时间戳 * 数组操作 * 数组去重 * 数组清洗(去除null和undefined) * 字符串操作 * 快速转换成字符串 * CSS命名方式转驼峰命名方式 * 驼峰转CSS命名方式 * 对象…
主要了解一下zepto定义的初始变量. 逐一以自己的理解解析,待到后面完全透彻理解之后,争取再写一遍zepto源码学习的文章. 其中的undefined确实不明白为什么定义这么个变量在这里. document = window.document根据个人理解应该是要兼容一些特殊情况下获取document的问题,但是也不知道在什么样的情况下,需要使用window.docment才能获取到document对象. key: 后面会多次用到初始化变量key,在for in循环中,需要确定键的名称,基本上只…
Zepto 提供了丰富的工具函数,下面来一一解读. 源码版本 本文阅读的源码为 zepto1.2.0 $.extend $.extend 方法可以用来扩展目标对象的属性.目标对象的同名属性会被源对象的属性覆盖. $.extend 其实调用的是内部方法 extend, 所以我们先看看内部方法 extend 的具体实现. function extend(target, source, deep) { for (key in source) // 遍历源对象的属性值 if (deep && (i…