this的实例化讲解
一个结论:this用于访问当前方法所属的对象,针对于普通函数而言,箭头函数不符合该结论。(访问的是对象,和方法函数无关)
一.this不跟着函数的定义走,而跟着函数的调用走
function show(){
console.log(this);
}
show();
此时输出为window,在我看来,此时的window扮演兜底的角色,但其实this不属于任何对象,于是严格模式出现,在严格模式下工作的代码,this输出为undefined。
// 严格模式,在此模式下,输出为undefined
'use strict';
function show(){
console.log(this);
}
show();
二.挂载在一个对象上,执行这个方法
'use strict';
function show(){
console.log(this);
}
var arr=[1,2,3];
arr.fn=show;
arr.fn();
此时输出得到:
三.定时器
'use strict';
function show(){
console.log(this);
}
setTimeout(show,100);
此时输出得到:
输出得到window,原因是因为定时器本身就是属于window的。
四.构造函数
'use strict';
function show(){
console.log(this);
}
let s=new show();
this相当于你构造出来的实例,相当于s
五.工具函数
'use strict';
function show(){
console.log(this);
}
show.call(123);
show.call('asdsddsr');
show.call(new Date());
show.call({a:12});
此时输出得到: