标签:define his window fun undefined UNC 设计 ons 严格
// 箭头函数不会改变this指向
const obj = {
name: ‘xcc‘,
func: function() {
console.log(‘---1---‘, this)
},
func1: () => {
console.log(‘---2---‘, this)
},
func2: function() {
console.log(‘---3---‘, this) // { name: ‘xcc‘, ...}
setTimeout(function() {
console.log(‘---4---‘, this)
}, 1000)
},
func3: function() {
setTimeout(() => {
console.log(‘---5---‘, this)
}, 1500)
},
func4: function() {
const _this = this
setTimeout(function() {
console.log(‘---6---‘, _this)
}, 2000)
}
}
obj.func() // { name: ‘xcc‘, func: [Function: func], func1: [Function: func1] }
// 箭头函数没有this的机制,在箭头函数外面拿到的是什么,在里面拿到的就是什么
obj.func1() // {}
console.log(this) // {}
obj.func2()
// setTimeout方法是挂在window对象下的。《JavaScript高级程序设计》第二版中,
// 写到:“超时调用的代码都是在全局作用域中执行的,因此函数中this的值在非严格模式下指向window对象,在严格模式下是undefined”
// 箭头函数中的this始终都是指向当前作用域的this
obj.func3() // ---5--- { name: ‘xcc‘, ...}
// 采用闭包来获取this
obj.func4() // ---6--- { name: ‘xcc‘, ...}
标签:define his window fun undefined UNC 设计 ons 严格
原文地址:https://www.cnblogs.com/sk-3/p/12945353.html