码迷,mamicode.com
首页 > 其他好文 > 详细

this 知多少

时间:2018-07-14 00:22:31      阅读:160      评论:0      收藏:0      [点我收藏+]

标签: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方法绑定后, 函数将被永远绑定在其第一个参数对象上, 而无论其在什么情况下被调用

this 知多少

标签:function   class   bsp   bind   箭头函数   第一个   注意   一个   time   

原文地址:https://www.cnblogs.com/renbo/p/9307940.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!