zepto源码知识点
记录看源码时候不太了解的知识点
matchesSelector = element.matches ||element.webkitMatchesSelector ||element.mozMatchesSelector ||element.oMatchesSelector ||element.matchesSelector
关于H5新的选择器api之前只了解querySeletor和querySeletorAll,MatchesSelector这个方法是匹配是否符合选择器,返回值是true false;但是大多不支持,需要用到浏览器前缀,
<div class = 'theOne'></div> let s = document.querySeletor('div').matchesSeletor('.theOne'); console.log(s); //true;
match = ~zepto.qsa(parent, selector).indexOf(element)
有个不常用的运算符按位非运算符~
感觉是不实用的方法
let num = 23, boo = false, obj = {}, arr = [], na = NaN, str = 'abcdefg'; ~num //-24,如果操作数能够转换为数值就直接取反并且减去一; ~obj //-1,{}.[],undefined,null,false,NaN,“”都转化为数字0在取反 ~str //-1对无法转为数值的字符串等,转为0 //~的运算等级比.[]()优先级低
运算符优先级别大概的逻辑是
取值>一元操作符(包含非运算符!)>算术运算>大小比较>相等不相等>逻辑与或>赋值>三元>逗号
function isPlainObject(obj) { return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype }
undefined和null的区别
undefined == null //如果str == null那么str会有两个值成立
typeof null === 'object'
typeof undefined === 'undefined'
判断是否是类似的数组对象,即有Length属性
function likeArray(obj) { var length = !!obj && 'length' in obj && obj.length, //综合判断obj是否存在,有length属性z如果都成立的话,最后取得Length的数值 type = $.type(obj) //判断obj的类型 return 'function' != type && !isWindow(obj) && (//是否是function ,window,array 'array' == type || length === 0 || (typeof length == 'number' && length > 0 && (length - 1) in obj) ) }
相关推荐
80437916 2020-02-01
zhoutaifeng 2020-01-17
xxuncle 2019-12-29
89463661 2019-12-26
PowerITxiang 2019-11-04
cloudwiseAPM 2017-05-26
88570299 2019-07-01
momode 2019-07-01
Xhj 2019-06-29
Awara 2019-06-29
New丶Elements 2019-06-29
ftl 2019-06-29
thisisid 2019-06-29
FruitHardCandy 2018-04-18
cloudwiseAPM 2017-05-26
85173253 2016-08-09
野风技术札记 2019-06-28
mzy000 2019-06-28