zoukankan      html  css  js  c++  java
  • 谈谈你对this的理解

    this的指向不是在编写时确定的,而是在执行时确定的,同时,this不同的指向在于遵循了一定的规则。

    1.默认情况下,指向全局,浏览器的话就是指向window

    2.如果函数被调用的位置存在上下文,那么函数被隐式绑定

    function f() {
            console.log( this.name );
        }
        
        var obj = {
            name: "Messi",
            f: f
        };
        
        obj.f(); //被调用的位置恰好被对象obj拥有,因此结果是Messi

    3.new 指向这个新对象。

    function Person(name) {
            this.name = name;
            console.log(name);
        }
          
        var person1 = new Person('Messi'); //Messi

    4.箭头函数的this指向哪里?
    箭头函数的是没有属于自己的this的,它所谓的this是捕获其上下文的this,作为自己的this,所以箭头函数不会被new调用,所谓的this也不会被改变
    我们可以用Babel理解一下箭头函数:

    // ES6
        const obj = {
            getArrow() {
                return () => {
                    console.log(this === obj);
                };
            }
        } 
    
        // ES5,由 Babel 转译
        var obj = {
            getArrow: function getArrow() {
                var _this = this;
                return function () {
                    console.log(_this === obj);
                };
            }
        };
  • 相关阅读:
    [CF1106E] 边界有问题
    UOJ 67 新年的毒瘤
    BZOJ 1093 [ZJOI2007]最大半连通子图
    codeforces round#510
    codeforces round#509
    杂谈
    BZOJ 3007 [SDOI2012]拯救小云公主
    BZOJ 1799
    BZOJ 3329
    BZOJ 3209 花神的数论题
  • 原文地址:https://www.cnblogs.com/wangxi01/p/11590210.html
Copyright © 2011-2022 走看看