1、this理解:
1.是关键字
2.this本身是一个内置的变量,该变量用于指向一个对象
3.this分类:
- 全局this--》 window
- 局部(函数内)的this--》谁调用该函数,this就是谁
- 构造函数的this---》当前构造函数new出来的实例对象
- 特色的this---》call,apply强制修改this
this:
函数谁调用,内部this就是谁;默认是window。
2. 如何确定this的值?
test(); //window
p.test(); //p
var test = new Test() //new出来的对象 test {}
test.call(obj) //obj
2、构造函数
//C是构造函数,o是new出来的实例对象
function C(){
this.a = 37;
console.log(this) //{a:37}
}
var o = new C();
console.log(o)//{a:37}
总结:new操作符都干了哪些事情
1、创建空对象 {}
2、确认this的指向:this---》创建的空对象{}
3、执行构造函数中的代码(为这个新对象添加属性) ;
4、返回新对象。
3、call apply----在JavaScript中,call和apply作用是一样的,都是为了改变函数体内部this的指向。
call(thisObj, arg1, arg2, arg3, arg4);
apply(thisObj, [args]);
//thisObj:call和apply第一个参数是一样的,该参数将替代Function类里面的this对象。
//arg1,arg2....:是一个个的参数,
//args:一个数组或类数组,是一个参数列表。