寒潮ing,你可能在FaceTest中遇到(3)—— what's this

this is this

  this是咱们常见的一种关键字,在不一样的场景下this也表明不一样的含义。通常地,咱们把this分为5种状况:1.默认绑定。2.隐式绑定。3.显式绑定。4.new 关键字绑定。5.箭头函数。下面分别简单的介绍下各类状况以及最后的判断图。javascript

  • 默认绑定
function fn() {
	console.log(this)
}
fn(); // this => window
复制代码

PS:严格模式下java

'use strict'
function fn() {
	console.log(this)
}
fn(); // this => undefined
复制代码
  • 隐式绑定
let obj = {
    a:1,
    fn:fn
}
function fn() {
	console.log(this)
}
obj.fn(); // this => obj
复制代码

PS:有一个坑的状况算法

let obj = {
    a:1,
    myfn() {
        return fn()
    }
}
function fn() {
	console.log(this)
}
obj.myfn(); // this => window
复制代码

  简单的理解就是由于函数的存储方式引用所致使的,具体请小伙伴们自信baidu咨询app

  • 显式绑定
let obj1 = {
    a:1,
    fn:fn
}
function fn() {
	console.log(this)
}
let obj2 = {
    b:2
}
obj1.fn.call(obj2); // this => obj2
// apply是同样的
复制代码
  • new 关键字绑定
function Fn() {
	console.log(this)
}
let myfn = new Fn(); // this => Fn {} this指向新建立的对象
复制代码
  • 箭头函数
    根据当前的词法做用域来决定this,箭头函数会继承外层函数调用的this绑定

下面直接上图

相关文章
相关标签/搜索