this指向
-
解析器每次调用函数时都会向函数传递一个隐含的参数
this
-
this
指向的是一个对象,该对象称为函数执行的上下文对象 -
根据函数调用方式的不同,
this
会指向不同的对象,与创建方式无关-
示例
function fun(){ console.log(this) } var obj={ name:'孙悟空', sayName:fun }
-
以函数的形式调用时,
this
指向windowfun() // 结果:Window {window: Window, self: Window, document: document, name: '', location: Location, …}
-
以方法的形式调用,
this
指向的是调用的方法所在的对象obj.sayName() // 结果:{name: '孙悟空', sayName: ƒ}
-
-
区别
-
基础代码
var name='全局' var obj1={ name:'孙悟空', sayName:fn } var obj2={ name:'沙僧', sayName:fn }
-
不使用
this
function fn(){ console.log(name) } fn() // 结果:全局 obj1.sayName() // 结果:全局 obj2.sayName() // 结果:全局
-
使用
this
function fn(){ console.log(this.name) } fn() // 结果:全局 obj1.sayName() // 结果:孙悟空 obj2.sayName() // 结果:沙僧
-