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

  • 相关阅读:
    从马琳决赛被翻盘想到的
    C语言中的位运算
    瑞星杀毒软件所有监控已禁用!
    回来了,重新开始
    使用 javascript 标记高亮关键词
    我的webgis客户端引擎AIMap
    RPM 命令大全
    终结IE6下背景图片闪烁问题
    linux下挂载硬盘光驱和U盘
    在JavaScript中实现命名空间
  • 原文地址:https://www.cnblogs.com/silenceshining/p/14433467.html
Copyright © 2011-2022 走看看