学习 javaScript ,其中 this 关键字也是个很令人头疼的问题。
this 是 javaScript 中的一个关键字,它在不同的场合,它的值也会发生变化。
下面我对 this 关键字的几种用法进行详细讲解。
第一种,在全局作用域内,使用 this ,它指向的对象是 window 对象。例如代码:
function num(){
return this
}
num() === window // 运行结果是 true
第二种,通过函数调用,当在全局作用内调用函数时,this 指向全局对象。例如代码:
function num(){
this.x = 1
console.log(this.x)
}
num() //运行的结果是1
换一种写法,结果也是一样的。
var x = 1;
function num(){
console.log(this.x);
}
num() //运行的结果还是1
第三种,方法的调用,在方法调用中,this 指向调用该方法的对象。例如代码:
function num(){
console.log(this.x)
}
var y = {}
y.x = 1;
y.z = num;
y.z() // 运行结果是1 ;
第四种,构造函数调用,在构造函数中,this 指向的是 用new 关键字创建出来的新对象。例如代码:
function num(){
this.x = 1;
}
var y = new num();
console.log(y.x) // 运行结果是1
第五种,call 和 apply 方法,
apply() 是函数对象的一个方法,它主要是用来改变函数的调用对象,用另一个对象来替换当前对象,所以 this 指向 apply()的第一个参数,例如代码:
function person(a,b){
this.name = a;
this.age = b;
console.log(this.name+' '+this.age);
}
function personNew(a,b){
person.apply(this,arguments);
}
personNew('Jack',22) //运行结果Jack 22
call() 也是函数对象的一个方法,它的 this 指向 和apply()大体相同,在这里就不具体说明了。。。
javaScript 中 this 关键字的用法大概就是以上几种,刚开始接触 this 都有一种晕的状态,包括我也是,要多在网上找代码练习,要对代码进行剖析,以上我的代码例子也是在网站上查阅而来的,总之多看多练,多学习别人的精华弥补自己的不足,这样才能进步的更快。。。