Heim  >  Fragen und Antworten  >  Hauptteil

Verwendung davon – Fragen dazu in Javascript Wenn eine Funktion als Methode eines Objekts aufgerufen wird, bezieht sich diese auf das übergeordnete Objekt.

Ich habe die zweite Nutzungsumgebung gesehen, als der Meister dies vorstellte. Der Originaltext ist hier:
http://www.ruanyifeng.com/blo...
Das Objekt hier sollte das sein? Wenn ja, warum ist dies am wenigsten deckungsgleich?

function test(){
    console.log(this.x);
  }
  var o = {};
  o.x = 1;
  o.m = test;
   console.log(o.m());
   console.log(o===this);

Die Ausgaben sind:
1
falsch

淡淡烟草味淡淡烟草味2660 Tage vor659

Antworte allen(4)Ich werde antworten

  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-14 10:56:15

    全局下this===window

    Antwort
    0
  • 漂亮男人

    漂亮男人2017-06-14 10:56:15

    在全局环境下执行console.log()this当然指向window了;
    this指向的是函数当前的执行环境

    Antwort
    0
  • PHP中文网

    PHP中文网2017-06-14 10:56:15

    o.m()是隐式绑定this到o对象
    全局作用域下this指向全局对象

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-06-14 10:56:15

    要记住,另外一种调用方式func.call(context, x, m) 上面的两种方式只是语法糖 可以通过“转换代码”的方式如:

    function test(){
        console.log(this.x);
      } 

    等价于

    function test(){
        console.log(this.x);
      }
    test.call(undefined)

    按理说打印出来的 this 应该就是 undefined 了吧
    但是浏览器里有一条规则:

    如果你传的 context 就 null 或者 undefined,那么 window 对象就是默认的 context(严格模式下默认 context 是 undefined)
    因此上面的this对应的应该是 window。

    Antwort
    0
  • StornierenAntwort