javascript - Was wird ausgegeben, wenn Sie diesen Code analysieren?
phpcn_u1582
phpcn_u1582 2017-05-19 10:41:46
0
2
572
    window.val = 1;
    var json = {
        val:10,
        dbl:function(){
            this.val = 2;
        }
    };
    json.dbl();//this.val = 2      ⒈
    var dbl = json.dbl;            ⒉
    dbl();//window.val = 1;        ⒊
    json.dbl.call(window);//this指向变为window,并且执行,window.val = 1;  ⒋
    alert(window.val + json.val);//json指向为window,所以val为1,1+1=2???  ⒌

Die Kommentare stellen mein erstes Verständnis dar, und nachdem ich die Ergebnisse gesehen hatte, habe ich versucht, die Antworten zu nutzen, um rückwärts zu denken und die Gründe zu finden.

=========================Die Trennlinie nach dem Lesen der Antwort================ ==========

Nach Schritt ⒈ ist dies immer noch dbl und val ist zu diesem Zeitpunkt 2. Nach Schritt ⒉ ⒊ wird window.val = 1 direkt aufgerufen, und dann wird der Aufruf geändert und zu diesem Zeitpunkt ausgeführt zum Fenster und überschreibt direkt das val-Attribut unter dem Fenster, sodass window.val 2 ist und der letzte Schritt 2 zu 2 + 2 = 4 wird.

Ich weiß nicht, ob diese Idee richtig ist, bitte geben Sie mir einen Rat, danke!

phpcn_u1582
phpcn_u1582

Antworte allen(2)
仅有的幸福
json.dbl();//this.val = 2      ⒈
var dbl = json.dbl;            ⒉
dbl();//window.val = 2;        ⒊
alert(window.val + json.val);//2+2  4

dbl() 执行的时候,此时this 就是 window 对象,window.val = 2, 你的第四部是没有必要的

世界只因有你
window.val = 1;
    var json = {
        val:10,
        dbl:function(){
            this.val = 2;
        }
    };
    json.dbl();//这一步,通过json调用dbl方法,把json里面的val值改为2
    var dbl = json.dbl;//这步,把dbl函数赋值给dbl
    dbl();//直接调用dbl函数,函数里面的this指向window,所以把Window.val的值也改为2
    json.dbl.call(window);//跟上一句一样,再一次把window.val的值改为2
    alert(window.val + json.val);//经过上面的修改,window的val为2,json里面的val为2,所以弹出:2 + 2 = 4
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!