节流:throttle
防抖:debounce
这两个是 JavaScript 开发中两个经常需要用到的工具函数,主要用于解决性能问题。节流的意思是针对某函数的连续调用,在一定时间内每隔一小段时间调用一次目标函数;防抖的意思是针对某函数的连续调用,只在一小段时间间隔后执行最后一次调用。
常用的场景有:浏览器高频 DOM 事件的回调函数,比如 scroll,mousemove,resize 等
节流:throttle
防抖:debounce
这两个是 JavaScript 开发中两个经常需要用到的工具函数,主要用于解决性能问题。节流的意思是针对某函数的连续调用,在一定时间内每隔一小段时间调用一次目标函数;防抖的意思是针对某函数的连续调用,只在一小段时间间隔后执行最后一次调用。
常用的场景有:浏览器高频 DOM 事件的回调函数,比如 scroll,mousemove,resize 等
首先var
,let
,const
都是用于定义变量,这是它们的共同点,那么它们的区别呢?
其实还可以什么都不用,直接给变量赋值,这样的话,就是赋值给了全局对象(在浏览器上就是 window 对象):
1 | a = 1; |
bind 函数我们经常用到,主要用于换绑 this。其返回值是一个方法。此外我们还可以把一些参数固定下来,相当于封装了一个简易函数。
apply 和 call 的相同点是:
不同点是:
apply 的第二个参数接收原函数的所有参数,而 call 从第二个参数开始跟原函数一样是打散的
代码如下:
1 | F(arg1, arg2, ...){} |
需要特别注意的是,如果是在非严格模式下,thisArg 如果为 null 或 undefined,就会被替换成全局对象(在浏览器中是 window);如果为原始值,就会被替换成原始值的的自动包装对象。
严格模式下,thisArg 传什么就是什么。
javascript 高级程序设计中有写,对象的继承总共有六种: