二阶段 core-day09

70 阅读1分钟

1、取消事件:

1、elem.onclick=()=>{}	-	取消:elem.onclick=null;
2、elem.addEventListener("事件名",函数名);	-	
    取消:elem.removeEventListener("当初的事件名",当初函数名);

2、this的指向:

1、单个元素绑定事件this->这个元素
2、多个元素绑定事件this->当前元素
3、定时器中this->window
4、箭头函数的this->外部对象
5、函数中的this->当前正在调用函数的对象

3、强制改变this的指向:

call/apply:临时替换了函数中的this - 借
	语法:函数名.call(借用的人,实参,...);
	          函数名.apply(借用的人,arr);
	借用相当于立刻执行

bind:永久替换了函数中的this - 买
	语法:var 新函数=函数名.bind(永久绑定的人,永久实参,...);
	不会立刻执行的,需要我们需要的时候再去调用。

三个固定套路:

	1、获取数组的最大值和最小值:Math.max/min.apply(Math,arr);
            //悄悄打散数组,其实还可以这么写:Math.max/min(...arr)
	2、判断x是不是一个数组:
            Object.prototype.toString.call/apply(x)=="[object Array]"
	3、类数组转为普通数组:
            var 接住=Array.prototype.slice.call/apply(类数组对象) 
            - 被代替:Array.from()

4、模板字符串: 我的名字叫${name},今年${age}岁;(不用引号,用1旁边的符号)

5、解构赋值:赋值的新方式

1、类似数组的解构赋值
	var [a,b,c]=[1,2,3]; - 函数的return可以返回多个数据

2、类似对象的解构赋值
	var {a,b,c}={a:1,c:3,b:2} - 衍生出函数的传参其实顺序是无所谓的

6、Set:将数组去重再转回数组,因为set提供的功能很少

arr=[...new Set(arr)];

7

  for(var v of arr){
        v;//当前值
      }
        不能修改原数组
        而且不能遍历hash数组,也就不能遍历对象