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来自函数作用域链,在函数作用域链中一层一层往上找。

  • 相关阅读:
    Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
    android intent和intent action大全
    手机信息
    Android 获取信号强度
    android 基站定位
    Android 读取SIM卡参数
    Android 获取手机SIM资料详解
    Android手机中获取手机号码和运营商信息
    java中的url 编码与解码
    java.util.Scanner的日常用法
  • 原文地址:https://www.cnblogs.com/silenceshining/p/14433467.html
Copyright © 2011-2022 走看看