JavaScript的this是什么,用来干啥?
在函数执行的时候,函数内部会在底层上自动创建两个变量 arguments和this
标准一些的讲 this指向函数的上下文
通俗来说 :
- 一般情况下一个函数 ,是谁调用的,this就指向谁
- call方法、apply方法,可以改变一个函数的this指向到你指定的对象
- 对于构造函数来说,this会指向由这个构造函数创建的实例
//情况1
function fn(){
console.log(this)
}
fn()
//这里实际上,是默认的用window对象调用fn 所以打印出来的是window对象
var obj={
fn2:function(){
console.log(this)
}
}
obj2.fn()
//这时候 是obj在调用 所以 this就是obj
//至于dom和bom操作那些,是dom和bom触发的函数,this就是那个dom或者bom了
//情况2
/*
call()和apply()会让函数的this在修改的地方运行
call()和apply()的第一个参数 都是this要指定的对象
call()从第二个参数开始会把参数依次传递给执行的函数
apply()第二个参数需要一个数组,保存所有要传递给执行函数的参数
*/
fn.call(obj)
//情况3 构造函数
function Ink(name){
this.name=name
console.log(this)
}
var snow=new Ink('HL')
//构造函数,这里的new关键字其实就是干了这样一件事
var snow = (function(){
var obj = {}
obj.__proto__=Ink.prototype
Ink.call(obj,'HL')//注意这里 就是让this指向这个obj了
return obj//然后再返回出去,this指向的对象,也让snow指向了
})()