非常适合新手的jq/zepto源码分析05

Posted 小结巴巴吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非常适合新手的jq/zepto源码分析05相关的知识,希望对你有一定的参考价值。

zepto的原型  $.fn  属性:

constructor              //构造行数
forEach: emptyArray.forEach,    //都是原生数组的函数
reduce: emptyArray.reduce,
push: emptyArray.push,
sort: emptyArray.sort,
splice: emptyArray.splice,
indexOf: emptyArray.indexOf,

 

concat                  //合并数组,这里还包含了合并节点集合
add                    //添加节点集合
is                    //匹配是否包含该选择器
      find: function(selector){
                var result, $this = this
                if (!selector) result = $()
                else if (typeof selector == \'object\')
                    result = $(selector).filter(function(){
                        var node = this
                        return emptyArray.some.call($this, function(parent){
                            return $.contains(parent, node)
                        })
                    })
                else if (this.length == 1) result = $(zepto.qsa(this[0], selector))
                else result = this.map(function(){ return zepto.qsa(this, selector) })
                return result
            },

  

emptyArray.some()     http://www.cnblogs.com/jiebba/p/6514067.html   可以看看js几种遍历不同

pluck              根据属性来返回节点集合
   // 设置宽高
        ;[\'width\', \'height\'].forEach(function(dimension){
            var dimensionProperty =
                dimension.replace(/./, function(m){ return m[0].toUpperCase() })

            $.fn[dimension] = function(value){
                var offset, el = this[0]
                if (value === undefined) return isWindow(el) ? el[\'inner\' + dimensionProperty] :
                    isDocument(el) ? el.documentElement[\'scroll\' + dimensionProperty] :
                        (offset = this.offset()) && offset[dimension]
                else return this.each(function(idx){
                    el = $(this)
                    el.css(dimension, funcArg(this, value, idx, el[dimension]()))
                })
            }
        })

  


 //添加函数`after`, `prepend`, `before`, `append`,

adjacencyOperators.forEach(function(operator, operatorIndex) { var inside = operatorIndex % 2 //=> prepend, append $.fn[operator] = function(){ // arguments can be nodes, arrays of nodes, Zepto objects and html strings var argType, nodes = $.map(arguments, function(arg) { var arr = []

  

 zepto.Z.prototype = Z.prototype = $.fn

  

绑定到原型上面

    window.Zepto = Zepto
    window.$ === undefined && (window.$ = Zepto)
    //绑定在全局

  

代码仅供参考,具体功能可以自己扩展。

个人博客 :很多好用的 npm 包 , 可以看看  https://gilea.cn/ 

http://www.cnblogs.com/jiebba/p/6529854.html 

http://www.cnblogs.com/jiebba    我的博客,来看吧!

如果有错误,请留言修改下 哦!

以上是关于非常适合新手的jq/zepto源码分析05的主要内容,如果未能解决你的问题,请参考以下文章

Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段

源码分析cJSON库学习

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段

Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段

爬虫学习之webmagic源码剖析

一行一行分析JQ源码学习笔记-05