关于this指向,是这几天学微信小程序开发时才恶补的,所以理解的不是很全面,但是还是有很多的收获的,所以想记录下来。
this在js中相当于指针的作用,但是和指针不同的是他的只想对象是分不同情况有很多变化的。this就是函数运行时所在的环境对象。
一、单纯的函数调用
var x = 2;
function first(){
console.log(this,x);
}
first();
此时输出的结果为2,因为上面说过了,this就是函数运行时所在的环境对象,而这时函数的环境为全局对象,因此this指向的就是全局变量中的x,即为2。
二、作为对象的调用
function first(){
console.log(this.x);
}
var a = {};
a.x = 3;
a.p = first;
first();
此时例一输出的结果为3,因为这是的函数是拥有上级函数的则此时的函数环境对象为其的上级函数,则this指向a,因此为a.x的值。
三、构造函数
当构造一个新的函数时,这是this指向这个新的函数。(new)
function first(){
this.x = 1;
}
var a = new first();
a.x;
这是的结果为1,因为new了一个新的函数,因此此时tihs的指向变成了new的这个新函数,而不是全局变量。如下:
var x = 2;
function first(){
this.x = 1;
}
var a = new first();
a.x;
x;
此时打印x的话,其值为2。
网友评论