JS-this 指向问题

10次阅读
没有评论

共计 962 个字符,预计需要花费 3 分钟才能阅读完成。

全局作用域或者普通函数中 this 指向全局对象 window( 注意定时器里面的 this 指向 window)

    console.log(this) // this指向window

    function fn() {
        console.log(this)
    }
    fn() // this指向window

    setTimeout(function () {
        console.log(this) // this指向window
    }, 1000)

方法调用中谁调用 this 指向谁

    let o = {
        sayThis: function () {
            console.log(this)
        }
    }
    o.sayThis() // this指向o这个对象

        btn.onclick = function () {
        console.log(this) // this指向btn
    }

    btn.addEventListener('click',function() {
        console.log(this) // this指向btn
    })

构造函数中 this 指向构造函数的实例

    function Fun() {
        console.log(this)
    }
    let fun = new Fun() // this指向fun实例对象
// 在函数中直接使用
function get(content) {
  console.log(content)
}
get('你好')
// get.call(window, '你好')

// 函数作为对象的方法被调用(谁调用我 我就指向谁)
var person = {
  name: '张三',
  run: function (time) {
    console.log(`${this.name} 在跑步,最多${time}min 就不行了`)
  }
}
person.run(30)
// person.run.call(person, 30)
var name = 222
var a = {
  name: 111,
  say: function() {
    console.log(this.name)
  }
}

var fun = a.say
fun()                  // fun.call(window) // 222

a.say()                // a.say().call(a) // 111

var b = {
  name: 333,
  say: function(fun) {
    fun()              
  }
}

b.say(a.say)           // fun.call(window) // 222
b.say = a.say
b.say()                // b.say.call(b) // 333

正文完
 0
qiaofugui.cn
版权声明:本站原创文章,由 qiaofugui.cn 于2024-05-20发表,共计962字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码