1、事件取消:
1、elem.on事件名=null;
2、elem.removeEventListener("事件名",当初添加时的回调函数);
2、this的指向:
单个元素绑定事件:this->这个元素 可用target代替
多个元素绑定事件:this->当前元素 可用target代替
定时器中的this->window
箭头函数中的this->外部对象
函数中出现了this->正在调用此函数的对象
3、其实不是自己的方法,也可以用,强制改变this的指向
call/apply:临时替换了函数中的this
语法:函数.call(借用的人,实参,...);
函数.apply(借用的人,arr);
借用相当于就是立刻调用
bind:永久替换了函数中的this
语法:var 新函数=函数.bind(指定的人,永久实参);
完成了3件事:
1、创建了一个和原函数完全相同的新函数
2、this被永久指定为了指定的人,其他人都借不走
3、甚至可以永久固定一些实参
买,是不会立刻执行的,需要自己调用
3个固定套路:
1、数组也可以获取最大值和最小值:Math.max/min.apply(Math,arr); ===> Math.max/min(...arr);
2、判断x是不是数组:Object.prototype.toString.call/apply(x)=="[object Array]"
3、类数组转为普通数组:普通数组=Array.prototype.slice.call/apply(类数组对象) ===> 普通数组=Array.from(类数组对象);
4、let、const、箭头函数
5、解构赋值:
1、类似数组的解构赋值 var [c,b,a]=[1,2,3] - return可以返回多个数据
2、类似对象的解构赋值 var {c,b=默认值,a}={a:1,b:2,c:3} - 衍生了传递实参的顺序其实无所谓了
6、模板字符串:
我的名字叫${name};
7、for(var v of arr){ v-值 }
缺陷:
1、没提供过下标,无法修改原数组
2、无法遍历hash数组,也无法遍历对象
8、Set和Map
[...new Set(arr)] - 使用Set数组去重,在从Set转回Array