22.1.2 作用域安全的构造函数
function Person(name){if(this instanceof Person){this.name = name;}else{return new Person(name);}}
:::info 这样就算不实例化这个构造函数,this也指向Person :::
22.1.4 函数绑定
var handle = {msg: "ss",handleClick: function(event){console.log(this.msg,event.type);}}// 这里是自己写的,下面调用的bind是原生的apifunction bind(fn,context){return function(){return fn.apply(context,arguments)}}// document.getElementById("test1").addEventListener("click",function(event){// handle.handleClick(event);// });document.getElementById("test1").addEventListener("click",handle.handleClick.bind(handle));
:::info 尽可能的少用闭包,这里可以用bind()将函数绑定到指定环境 :::
22.3.3 函数节流
背后的思想是:某些代码不可以在没有间断的情况下连续重复执行,目的是在执行函数的请求停止了一段时间后才执行
function throttle(method, context){clearTimeout(method.tId);method.tId = setTimeout(function(){method.call(context);}, 200)}document.getElementById("test1").onclick = function(){throttle(demo2);}function demo2(){// 执行业务的代码console.log("防止点击的太快");}
:::info 只要代码是周期性执行的,都应该使用节流。 :::
