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的指向,不必硬背。

  • 相关阅读:
    while循环和递归
    ASP.NET Core Swagger 显示接口注释
    ABP依赖注入
    EF Core 笔记
    .NET Core 管道过滤器扩展
    ABP权限认证
    552 you must authentication
    C# 多线程写文件,时常写不成功
    .Net 的一些插件
    多线程下HttpContext.Current 的问题
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/9708321.html
Copyright © 2011-2022 走看看