1、slice、substr、substring区别
先看参数
substr(start, length)
、slice(start, end)
、substring(start, end)
其中substring
的参数,会把负数全部当做0;
由于substr
的第二个参数为要截取的长度,所以不能为负数,负数会当做0;
其他情况下,substr
和slice
的参数中,负数就是倒数
2、call、bind、apply区别
先看参数
call(obj, arg1, arg2...)
、bind(obj, arg1, arg2...)
、apply(obj, args)
call
和apply
都是把函数内的this
对象指向obj
参数,并运行调用这个方法的函数。call
的后面的参数是一个个列出来,而apply
是把所有参数放到数组里传入
bind
用来返回一个新函数,而新函数中的this
指向obj
参数,后面的参数会全部传给原函数的参数,之后的新函数,变不可以再传该参数了
3、offset高宽位置
1、offsetParent
:元素的父级元素中,第一个position
为relative
的元素。没有的话,则为body
。所以offsetParent
并不一定等于parentNode
2、offsetHeight
、offsetWidth
:等于:可见(如果出现滚动条,则看不到的区域不算)内容区高宽+padding
+border
,可以说是样式中的height+padding+border
3、offsetLeft
、offsetTop
:元素的边框之外距离offsetParent
的边框之内的距离。所以,如果需要知道元素距离body
的left
和top
,必须把offsetLeft
或offsetTop
与offsetParent
的相同属性相加,并一直循环加到body
![](https://img.haomeiwen.com/i3520410/f7b6fe34feb586cb.png)
4、client高宽位置
1、clientHeight
、clientWeight
:可见内容区高宽+padding,同时也等于:offset高宽
-滚动条的宽度-border
2、 clientLeft
、clientTop
:分别等于左边框的宽度和上边框的宽度?
5、scroll高宽位置
1、scrollHeight
、scrollWidth
:元素在没有滚动条的情况下,元素内容的总高宽。把height设置为auto时,scollHeight = clientHeight = (offsetHeight - border - 横向滚动条宽度)
2、scrollLeft
:元素左侧不可见区域的宽度。滚动条在最左边时,scrollLeft == 0
,滚动条在最右边时scrollWidth == scrollLeft + clientWidth
6、event.target和event.currentTarget
currentTarget
表示事件是注册到该元素上的,target
则表示实际触发事件的元素。
比如:在body
上注册一个click
事件,当点击页面中的一个按钮时。currentTarget === body
,而target === 按钮元素
7、鼠标事件中的鼠标位置
clientX(Y)
始终是鼠标相对于浏览器窗口(不包括浏览器的工具栏,不管是否有滚动条)的位置
pageX(Y)
鼠标相对于整个页面的位置,当整个页面没有出现滚动条时,总是等于clientX(Y)
screenX(Y)
相对于电脑屏幕的位置
offsetX(Y)
相对于target元素的位置
网友评论