1.短时间内触发次数很多的事件或函数,需要防抖
防抖示例,在时间间隔内,只有最后一次触发有效
function debounce(callback, delay = 300) { var timer = null return function() { clearTimeout(timer) timer = setTimeout(callback, delay) } } window.onscroll = debounce(function() { //使用 console.log('调用了1次') }, 500)2.也可以用节流来解决
只有大于上一次触发在规定时间间隔才能触发
function throttle(callback, delay) { var lastTime = new Date().getTime() return function() { var now = new Date().getTime() if (now - lastTime > delay) { callback() lastTime = now } } } window.onscroll = throttle(function() { //使用 console.log('调用了1次') }, 500)看懂_proto_和prototype的关系及区别
function Func() {} var func = new Func() console.log(Func.prototype === func.__proto__) // true console.log(Func.prototype.__proto__ === Object.prototype) // trueJavascript中所有的对象都是Object的实例,并继承Object.prototype的属性和方法
凡是对象都会有一个属性那就是__proto__,这个__proto__指向的就是他的构造函数的prototype
那么什么是原型链呢?接着上面的讲,我们都知道对象都有一个toString方法。上述的实例化对象b也可以toString,而实例化对象b本身并没有toString的方法,那他就会沿着它的__proto__向他的构造函数B的prototype对象去找,而这里也没有,那他就会 继续沿着B.prototype.__proto__向上找。而B.prototype.__proto__指向的就是Object.prototype
深入理解 Javascript 之 JS的深浅拷贝
基本类型:从一个变量向另外一个新变量复制基本类型的值,会创建这个值的一个副本,并将该副本复制给新变量,所以基本类型进行复制是不会对另外一个变量有影响的引用类型:从一个变量向另一个新变量复制引用类型的值,其实复制的是指针,最终两个变量最终都指向同一个对象浅拷贝:仅仅是复制了引用,彼此之间的操作会互相影响深拷贝:在堆中重新分配内存,不同的地址,相同的值,互不影响代码面试需要知道的8种数据结构