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

  • 相关阅读:
    tomcat 配置ssi
    oracle exp imp 导入 正在跳过表 plsql 导入表 成功终止 数据 被导入
    oracle 创建数据表空间和用户
    移动端开发来个总结吧
    ssl四次握手
    面试-布局
    typeof的原理?
    马上面试了就,复习一下排序
    关于webview无法设置页面标题
    关于let的生命提升
  • 原文地址:https://www.cnblogs.com/silenceshining/p/14433467.html
Copyright © 2011-2022 走看看