this总结

145 阅读1分钟

1.谁调用this,this就指向谁。

2.this只有在调用时才知道指向谁

3.this的三大定律

(1)到处都是this,this可以写到js代码的任何地方
(2)this的指向随时都在变化,只有在调用时才知道

(3)不能手动修改this

4.四种情况

(1)在一个普通函数里(不是方法),那么this就指向window

(2)有明确的对象时,就指向这个对象。例如图中是obj调用this,this就指向obj,会返回 obj这个对象。
(3)如果在调用函数之前new,会创建并返回一个新的对象,this就指向这个新对象。
(4)Function对象会使用call、apply来修改this的指向。当使用call和apply来修改时,会自动调用函数。call和apply只有在传参的时候不一样,call传参是有序的,一一对应就可以,而apply需要在实参中写一个数组进行传参。

5.结论

如果方法内部有this。如何确定这个this的值呢?

要方法被 调用 调用 调用 时确定

看方法前的那个对象是谁,this就指向谁。

(1)有明确的对象
例如:Obj.say();say 的当前对象是obj,所以say中的this 就指向obj。
(2)没有明确的对象
如果这个函数没有明确说是哪个对象的,则它肯定是属于window对象的,所以this就会指向window.
(3)如果是call和apply的方式,这时,this指向第一个参数
例如:f.call(obj1),f中的this指向obj1。

在调用方法时,才知道this的真正指向!