zoukankan      html  css  js  c++  java
  • js中的this

    js中的this容易产生误用,举例说明使用:

    一 常规用法:

    var person = {
        name: 'tim',
        love: function () {
            console.log(this.name + ' like playing basketball');
        }
    }
    person.love();

    打印:

    tim like playing basketball

    二 错误用法:

    var person1 = {
        name: 'tim',
        love: function () {
            var sports = function () {
                console.log(this.name + ' like playing basketball');
            }
            sports();
        }
    }
    person1.love();

    打印:

    undefined like playing basketball

    这种情况下的this拿到的不是person1对象,而是整个全局对象,在网页中此时的this就指window对象。

    三 解决方案A:

    var person2 = {
        name: 'tim',
        love: function () {
            var self = this;
            var sports = function () {
                console.log(self.name + ' like playing basketball');
            }
            sports();
        }
    }
    person2.love();

    打印:

    tim like playing basketball

    使用属性self接收this的方式来解决this的指向问题。

    四 解决方案B:

    var person3 = {
        name: 'tim',
        love: function () {
            var self = this;
            var sports = () => {
                console.log(this.name + ' like playing basketball');
            };
        sports();
        }
    }
    person3.love();

    打印:

    tim like playing basketball

    使用箭头函数的方式来解决this的指向问题。箭头函数没有自己的this值,箭头函数中所使用的this来自函数作用域链,在函数作用域链中一层一层往上找。

  • 相关阅读:
    java架构之路-(面试篇)Mysql面试大全
    web工程的路径问题详解
    SQL知识点总结
    Mybatis简介
    mysql大全
    配置心得
    spring4.1.3+springmvc+mybatis3.2.1整合
    jstl标签
    jstl标签库
    Java并发控制机制
  • 原文地址:https://www.cnblogs.com/silenceshining/p/14433467.html
Copyright © 2011-2022 走看看