https://segmentfault.com/a/1190000015438195
很有趣的三个简单差异
var a = 1
function test () {
console.log(this.a)
}
test()
// 1
let a = 1
function test () {
console.log(this.a)
}
test()
// undefined
'use strict'
var a = 1
function test () {
console.log(this.a)
}
test()
// Uncaught TypeError: Cannot read property 'a' of undefined
一、不带任何引用形式的去调用,test()
this指向全局对象。
在非严格模式下,没有其他影响去改变this的时候,this默认指向全局对象(浏览器是window,node是global)。
问题为什么在严格模式下,在方法里的this是undefined??
二、拥有调用者的this,obj.test()
当方法拥有调用者时,谁去调用的,this就绑定在谁身上。
var a = 1
function test () {
console.log(this.a)
}
var obj = {
a: 2,
test
}
var testCopy = obj.test
testCopy()
// obj.test()