2018-06-04 this

this寻找规则:

首先判断()左边是否为属性引用,如果不是,那么将this设置为undefined,如果是,那么判断引用属性是否为属性引用,如果是,那么将this设置为这个属性引用值的对象.如果不是,那么将this设为undefined,如果this为undefined,那么this就等于window

1:首先判断()左边是否为属性引用,如果不是,那么将this设为undefined

function f1 () {

return this

}

f1() // this === window

// 括号左边不是引用类型,将this设为undefined,个人理解:函数这个代码段在window的作用域下

2:首先判断()左边是否为引用类型,如果是,那么接着判断是否为属性引用,如果是,那么将this设置为这个属性引用值的对象

var obj = {

  f1:  functiuon () {

return this

}

}

obj.f1() // this === obj  

// 括号左边为引用类型,并且为属性引用,则将this设为obj

3:首先判断()左边是否为引用类型,如果是,那么接着判断是否为属性引用,如果不是,那么将this设置为undefined

function f1 () {

var f2 = function () {

console.log(this) // this为window

}

f2()

}

f1() // f2为引用类型但是并不是属性引用,所以设置为undefined



http://suanmei.github.io/2016/06/14/deeply_understand_this/

你可能感兴趣的:(2018-06-04 this)