标签:function class bsp bind 箭头函数 第一个 注意 一个 time
js 中的this 到底指向哪里涅,学习js的过程中,肯定有不少小伙伴们调入this的大坑中,究其原因,this的指向在函数创建的时候是决定不了的,在调用的时候才能决定,谁调用的就指向谁。。。曾经,我也被this虐的不要不要的,然鹅this虐我千百遍,我待this如初恋,今天本骚年就以拙劣的文笔试着把this说清楚,老规矩,show you the code:
var app = { fn1: function () { console.log(‘fn1->‘, this) }, fn2: function () { return function () { console.log(‘fn2->‘, this) } }, fn3: function () { function fn() { console.log(‘fn3->‘, this) } fn() }, fn4: function () { return { fn: function () { console.log(‘fn4->‘, this) } } }, fn5() { setTimeout(function () { console.log(‘fn5->‘, this) }, 10) }, fn6() { setTimeout(() => { console.log(‘fn6->‘, this) }, 20) }, fn7() { setTimeout((function () { console.log(‘fn7->‘, this) }).bind(this), 30) }, fn8: () => { setTimeout(() => { console.log(‘fn8->‘, this) }, 40) } }
首先回顾下this的一些套路:
1.对象内部方法的this指向调用这些方法的对象
2.构造函数中的this与被创建的新对象绑定。(本例用不到)
3. 箭头函数指向函数所在的所用域: 注意理解作用域,只有函数的{}构成作用域,对象的{}以及 if(){}都不构成作用域;(这很关键)
4.通过bind方法绑定后, 函数将被永远绑定在其第一个参数对象上, 而无论其在什么情况下被调用
标签:function class bsp bind 箭头函数 第一个 注意 一个 time
原文地址:https://www.cnblogs.com/renbo/p/9307940.html