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


    先看一道题目:

    var User = {
    count: 1,
    
    getCount: function() {
    return this.count;
    }
    };
    console.log(User.getCount());
    var func = User.getCount;
    console.log(func());

    阮一峰博客:this就是函数运行时所在的环境对象,this的指向在函数创建的时候是决定不了的,在调用的时候才能决定(这里es6的箭头函数是个例外),http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
    上面的代码在浏览器和node中,都会输出 1和 undefined,体会下.
    我们改造下,在上面代码最前面加入一行:

    var count = 2;

    执行添加后的代码,浏览器会打印 1 2。node下还是会打印 1 undefined。

    可以在getCount方法打印this,在浏览器环境是window,在node环境是global。

    node运行环境下,getCount里面的this指向global,var下声明的变量并不在global对象下,导致找不到count变量,打印出undefined。这点和浏览器下var变量在window下是不一样的。

    es6的箭头函数的this是定义时所在的对象,是固定的,跟运行环境无关。


    关于node下模块是怎么执行的,参见cnode下的讨论帖子https://cnodejs.org/topic/55a86cb908f6814b602ab7ad

    找到一篇很详细的关于this的博客:

    彻底理解js中this的指向,不必硬背。

  • 相关阅读:
    流量数据iftop命令
    DNS A记录和CNAME记录
    centos6.5安装mysql
    Python列表插入字典(转)
    列表转字典
    python 二分法O(logn)
    centos 6.5搭建Samba
    反爬虫-----看这一篇就够了
    windows常用命令
    requests中文页面乱码解决方案【转】
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/9708321.html
Copyright © 2011-2022 走看看