1.当一个函数在全局被调用时,就相当于是 window 在调用这个函数,因此 this 指向 window
结果:
2.当一个函数是对象中的一个属性,通过对象调用这个方法时,this 指向这个对象(谁调用了这个函数,this就指向谁)
例子1:
结果:
例子2:obj 对象中嵌套 obj2 对象
结果:
例子3:如果在全局中把对象中的一个函数赋值给了一个全局变量,则 this 指向 window
结果:
3.在使用构造函数时,如果在一个函数前面加上new关键字来调用,那么就会创建一个连接到该函数的prototype成员的新对象;如果被调用的函数没有显式的 return 表达式(仅限于返回对象),则隐式的会返回 this 对象 - 也就是新创建的对象。
注意:显式的返回以下值:undefined, null, boolean, number等基础类型,并不会代替 new 式调用的默认行为。
但显式返回以下值:{},[],RegExp, Date, Function,均会代替 new 调用的默认返回值 this.
没有return
结果:
return null:
结果不变:
return 1:
结果不变:
return {}:
结果为undefine:
return [ ]:
结果为undefine:
4.使用 call 和 apply 改变 this 指向(指向你传进去的对象):
结果:
5.匿名函数中this指向,匿名函数在全局作用域中执行,具有全局性,所以匿名函数中的 this 指向 window:
结果:
最后:有错误欢迎指出!!!!!!!