• 关于this指向问题的总结【转自秘密花园】


     

    this 的工作原理

    JavaScript 有一套完全不同于其它语言的对 this 的处理机制。 在种不同的情况下 ,this 指向的各不相同。

     

    第一种:全局范围内

    this;

    当在全部范围内使用 this,它将会指向全局对象window。

    第二种:函数调用

    foo();
    

    这里 this 也会指向全局对象window。

    ES5 注意: 在严格模式下(strict mode),不存在全局变量。 这种情况下 this 将会是 undefined

     

    第三种:方法调用

    test.foo(); 
    

    这个例子中,this 指向 test 对象。

    第四种:调用构造函数

    new foo(); 
    

    如果函数倾向于和 new 关键词一块使用,则我们称这个函数是构造函数 。 在函数内部,this 指向新创建的对象。

     

    第五种:显式的设置 this

    function foo(a, b, c) {}
    
    var bar = {};
    foo.apply(bar, [1, 2, 3]); // 数组将会被扩展,如下所示
    foo.call(bar, 1, 2, 3); // 传递到foo的参数是:a = 1, b = 2, c = 3
    

    当使用 Function.prototype 上的 call 或者 apply 方法时,函数内的 this将会被 显式设置为函数调用的第一个参数。

    因此函数调用的规则在上例中已经不适用了,在foo 函数内 this 被设置成了bar。第五种也是常见的call和apply用法的基本功能。

    经常会遇到,却经常出错,总结一下,偶尔温故使用。

  • 相关阅读:
    如何招到一个靠谱的程序员_转
    区块链blockchina简述
    TCP和UDPsocket中SO_SNDBUF和SO_RCVBUF_转
    Medium开发团队谈架构设计_转
    cgi与fastcgi区别_转
    RESTful
    各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT_转
    mosquitto简单应用
    组播MAC地址_转
    纳德拉再造微软:如何重回第一阵营?
  • 原文地址:https://www.cnblogs.com/oyangyin/p/4683053.html
Copyright © 2020-2023  润新知