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

  function isPlainObject(obj) {
    return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype
  }

  

Object.getPrototypeOf(obj)    返回 obj 的原型

这是查看是不是简单的对象

 

   function likeArray(obj) {
            var length = !!obj && 'length' in obj && obj.length,
                type = $.type(obj)

            return 'function' != type && !isWindow(obj) && (
                    'array' == type || length === 0 ||
                    (typeof length == 'number' && length > 0 && (length - 1) in obj)
                )
        }

  

'length' in obj      对象obj是否有length属性

是否为类数组

 

compact(array)   去除array里面的空数组

flatten(array)    如果array数组是个Z对象数组,则合并

 camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }

  

str.replace(reg/str,rep/fun)  用rep替换匹配到的字符串

如果rep里面有$ , 则代表匹配的子表达式等 ,fun(match,$1,$2)  match匹配的字符,$1第一个返回的值

转为驼峰命名

dasherize(str)  将驼峰命令转为 abcAac  -- >  abc-abc

 

uniq(array)  查看这个键值是否唯一,

classRE(name)  添加样式的正则到classCashe里面

maybeAddPx(name,value)    查看name这样式属性是否需要添加px,并返回

     function defaultDisplay(nodeName) {
            var element, display
            if (!elementDisplay[nodeName]) {
                element = document.createElement(nodeName)
                document.body.appendChild(element)
                display = getComputedStyle(element, '').getPropertyValue("display")
                element.parentNode.removeChild(element)
                display == "none" && (display = "block")
                elementDisplay[nodeName] = display
            }
            return elementDisplay[nodeName]
        }

  

getComputedStyle(elem)  获取元素的样式列表,只读

getPropertyValue(name)  获取元素的某个样式属性  

设置节点默认display属性

 

 

     function Z(dom, selector) {
            var i, len = dom ? dom.length : 0
            for (i = 0; i < len; i++) this[i] = dom[i]
            this.length = len
            this.selector = selector || ''
        }

  

类数组的dom的list对象

 

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

 

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

 

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

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值