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)
上一篇下一篇

猜你喜欢

热点阅读