javascript - Comment comprendre ce code?
扔个三星炸死你
扔个三星炸死你 2017-06-26 10:55:12
0
3
586
var name = "123";

    var object = {
        name: "My Object",
        getNameFunc: function() {
            return this.name;
        }
    }
    console.log(object.getNameFunc());                            //My Object
    console.log((object.getNameFunc)());                        //My Object
    console.log((object.getNameFunc = object.getNameFunc)());    //123

Pourquoi le résultat final est-il de 123 ? Que signifie object.getNameFunc = object.getNameFunc ?

扔个三星炸死你
扔个三星炸死你

répondre à tous(3)
为情所困

J'ai mal lu la question, laissez-moi l'expliquer à nouveau.

Premier regard sur object.getNameFunc, sa définition est

function () {
  return this.name
}

Quand vous écrivez object.getNameFunc = object.getNameFunc comme ça, cela peut en fait être vu comme ça.

object.getNameFunc = function () {
  return this.name
}

En fait, en faisant une telle chose, this 已经不是 object 了。而是 window(在浏览器里)了。所以输出的是外面的 name.

Probablement comme ça = =

phpcn_u1582

Le résultat de l'opération d'affectation est une lvalue.

Par conséquent
(object.getNameFunc = object.getNameFunc)()
peut être considéré comme :

var f = (object.getNameFunc = object.getNameFunc); 
f(); 

Donc this pointe vers le global, donc nous obtenons 123

Peter_Zhu
var name = "123";

var obj = {
    name: "My Object",
    getNameFunc: function() {
        return this.name;
    }
}
console.log(obj.getNameFunc());                            //My Object
console.log((obj.getNameFunc)());                        //My Object
console.log((obj.getNameFunc = obj.getNameFunc)());    //123
console.log((obj.getNameFunc = obj.getNameFunc));      

À en juger par les résultats des citations, cela doit indiquer la situation globale. Il peut y avoir des liens au milieu qui ne sont pas compris.
Si on ajoute un morceau de code à la fin, on peut savoir quel est le contenu de (obj.getNameFunc = obj.getNameFunc) Oui, il y a une fonction dans la console, donc l'instruction (obj.getNameFunc = obj. getNameFunc) est exécuté Le résultat est une fonction. La pensée inertielle nous amène à considérer comme acquis qu'il ne s'agit que d'une opération de réaffectation, et que c'est toujours obj qui appelle la fonction.
En fait, une fois l'instruction exécutée, cette fonction est en fait appelée par l'objet global.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal