【javascript】this、let、箭头=>、解构、字符串、数组用法、Symbol、set、map
一、this关键字详解,改变this指向的方法call、apply、bind深度分析
1、this
每一个函数中,都有一个内置的变量this,这个this中存储着当前函数的主人,所以,要知道this是谁,就要通过上下文分析,当前函数的主人是谁。this永远存储的是当前函数的主人。
2.常见三种情况:
- 全局函数中指向window
//1、全局函数
function show(){
alert(this); //[object Window]
}
show();
- 对象方法中指向该对象
//2、this => person
var person = {
username: "钢铁侠",
show: function(){
alert(person.username);
alert(this.username);
}
}
person.run = function(){
}
- 事件绑定中,指向目标对象
// person.show();
window.onload = function(){
var oBtn = document.getElementById("btn1");
oBtn.onclick = function(){
alert(this.innerHTML);
}
}
二、改变this指向的方法call、apply、bind深度分析
call
格式:函数名.call();
参数:
第一个参数:传入该函数this指向的对象,传入什么强制指向什么
第二个参数开始:将原函数的参数往后顺延一位。
show.call("call", 20, 40);
apply
格式:函数名.apply()
参数:
第一个参数:传入该函数this指向的对象,传入什么强制指向什么
第二个参数:数组 数组,放入我们原有所有的参数
show.apply("apply", [20, 40]);
- apply方法使用的小技巧
// Math.min(); //传入所有参数中的最小值
// Math.max(); //传入所有参数中的最大值
/* alert(Math.min(10, 20, 30, 40, 50));
alert(Math.max(10, 20, 30, 40, 50)) */
var arr = [10, 20, 30, 40, 50];
alert(Math.min.apply(null, arr));
alert(Math.max.apply(null, arr));
bind 预设this指向
*/
/* function show(x, y){
alert(this);
alert(x + ", " + y);
}
var res = show.bind("bind");
// res(40, 50);
show.bind("bind")(40, 50); */
function show(){
alert(this);
}
window.onload = function(){
var oBtn = document.getElementById("btn1");
/* oBtn.onclick = function(){
show.call("call");
} */
/* oBtn.onclick = function(){
show.apply("apply");
} */
// oBtn.onclick = res;
}
三、ECMA6(ECMA2015)新增语法
深入的研究ES6——>官网的文档:http://www.ecma-international.org/ecma-262/6.0
3.1 let关键字
- 用来替代var的关键字
<