recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment comprendre ce code?

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 ?

扔个三星炸死你扔个三星炸死你2819 Il y a quelques jours595

répondre à tous(3)je répondrai

  • 为情所困

    为情所困2017-06-26 10:57:12

    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 = =

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-06-26 10:57:12

    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

    répondre
    0
  • 天蓬老师

    天蓬老师2017-06-26 10:57:12

    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.

    répondre
    0
  • Annulerrépondre