JavaScript我是this

78 阅读2分钟

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、创建了一个和原函数完全相同的新函数
		2this被永久指定为了指定的人,其他人都借不走
		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