this
一:在普通函数中的this:window
在普通函数中的this总是代表它的直接调用者,在默认情况下,this指的是window
function fn(){
alert(this.username);
}
fn();
二:方法中的this
var isObject = {
a: 'inner object',
innerx: function() {
return this.a;
}
}
console.log('方法里的this指向:', isObject.innerx());
由上面代码可以看出,因为对象调用了其内部方法innerFunction(),所以此时this指向使用它时所在的对象,即isObject对象。
三:箭头函数中的this
箭头函数内部并没有绑定this的机制,所以this的指向是固定的,即指向当前定义时所在的对象
var thisjs = {
a: 'hhh',
functions: () => {
console.log("对象:",this);
}
}
thisjs.functions();
//输出结果:对象:Window {postMessage: , blur: , focus: , close: , parent: Window, …}
同样是对象方法,箭头函数里的this指向的是window对象。
再来看一个例子:
var thisjs= {
a: 'hhh',
functions: () => {
this.a = 0
console.log("结果:",this.a);
}
}
thisjs.functions();
//输出结果:结果:0
此时,在isObject对象functions方法内部定义了一个属性a,它属于this全局对象,所以输出结果为0。
四:call,apply和bind中this指向的是函数call的第一个参数
apply 、 call 、 bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文(函数的每次调用都会拥有一个特殊值——本次调用的上下文(context)——这就是 this 关键字的值