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

  • 相关阅读:
    winsock编程WSAAsyncSelect模型
    winsock编程select模型
    socket编程,简单多线程服务端测试程序
    模板singleton模式的C++实现
    windows socket函数详解
    ACE_Message_Block消息数据类
    ACE Socket Wrapper Facade
    ACE_Event_Handler:事件响应入口
    ACE_Time_Value
    华为ICDcomm接口js测试
  • 原文地址:https://www.cnblogs.com/silenceshining/p/14433467.html
Copyright © 2011-2022 走看看