this的关键字理解和指向
2020-02-11 本文已影响0人
五四青年_4e7d
普通函数中this指向的是window
function add(a,b){
console.log(this)
return a + b
}
// this = window
add()
事件处理函数中this指向事件源:
//html:
<button id="but">按钮</button>
//js:
$("#but").on("click",function(){
console.log(this)
})
回调函数中this指向window:
var Bob={
sname:"鲍勃",
friends:["Jack","Rose","Tom","Jerry"],
intr(){
this.friends.forEach((ele)=>{
console.log(this.sname+"认识"+ele);
});
}
}
Bob.intr();
构造函数中this指向的是创建出来的对象:
function Person3() {
this.name = 'tianxia'; //这个this指向什么?
}
var person3 = new Person3();
怎么样改变this的指向?(call() apply() bind()调用模式:)
function info(name,age){
return console.log('你好'+ name + '我是调用的'+ this.name + age + '岁')
}
var whh = {
name:'娃哈哈'
}
console.log(whh)
//使用call可以把this绑定上,function的this等于什么,可以在外部指定;
//第一项用于绑定函数里面的this
//call和apply本质上是一样的不同的区别如下:(传参为数组)
//bind 必须要用变量接收,调用变量()不马上执行
info.call(whh,'李慷',111)
info.apply(whh,['李慷',111])
var yy = info.bind(whh)
yy('kk',22)