非常适合新手的jq/zepto源码分析02
1 2 3 | function isPlainObject(obj) { return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype } |
Object.getPrototypeOf(obj) 返回 obj 的原型
这是查看是不是简单的对象
1 2 3 4 5 6 7 8 9 | 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对象数组,则合并
1 | 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,并返回
1 2 3 4 5 6 7 8 9 10 11 12 | 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属性
1 2 3 4 5 6 | 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 我的博客,来看吧!
如果有错误,请留言修改下 哦!
感觉可以就推荐下吧!!
感觉可以就推荐下吧!!
感觉可以就推荐下吧!!
感觉可以就推荐下吧!!
感觉可以就推荐下吧!!
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步