javascript – Fragen zum Kontext, also worauf das hindeutet?
某草草
某草草 2017-07-05 10:56:18
0
5
918

Gehe direkt zum Code:

var test = {
  outer: function () {
    // 此时this指向test对象
    console.log(this);
    
    function inner() {
      // 此时this指向window
      console.log(this);
    }
    inner();
  }
}

Was ist der Grund, warum dieser Punkt im obigen Code anders ist?

Ich verstehe es jetzt sehr gut, bitte gib mir eine Antwort!

某草草
某草草

Antworte allen(5)
大家讲道理

抛出函数借用和构造函数,就剩两种,一种是普通函数,一种是对象方法。

对象方法指向对象,普通函数指向全局

曾经蜡笔没有小新

谁调用了这个函数,那么this就指向谁。

this的指向只和你如何调用这个函数有关,比如你说第一个this指向test,这可不一定,有的是办法把这个this的指向改掉。只有当你运行test.outer()的时候,第一个this才会指向test

Ty80

/a/11...

女神的闺蜜爱上我

这是闭包问题,在给一个对象通过对象字面量进行了赋值属性 其中包括一个函数方法,这个函数方法有个控制台输出,然后这个函数里面又声明一个函数形成了闭包问题,闭包在一般情况下this都是指向window的.有特殊情况可以改变this的值 你可以看看我写的一篇有关闭包的文章 你会有收获的 手机不方便贴 你可以看我个人资料

巴扎黑

其实把匿名回答的都不对!在对象里函数内部定义的函数,是不能直接获取上一级环境变量的 ,更不能直接得到里面的this 要对她定义变量 比如 var that=this;这也你就能拿到上级的this对象;
var test = {

    outer: function () {
        // 此时this指向test对象
        var that=this
        console.log(this);

        function inner() {
            // 此时this指向window
            console.log(that);
        }
        inner();
    }
}
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage