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

javascript - Si une méthode doit utiliser des données externes, devriez-vous choisir de la transmettre en tant que paramètre ou de sauvegarder les données en tant que variable globale par rapport à la portée actuelle ~

var test = {
    init: function () {
        var data = $rootScope.test;
        
        if(data) {
            ……
            this.method(data);
        } 
    },
    
    method: function (data) {
        console.log(data);
    }
};

toujours

var test = {
    data: $rootScope.test,
    
    init: function () {
        if(this.data) {
            ……
            this.method();
        } 
    },
    
    method: function () {
        console.log(this.data);
    }
};

Quelle méthode est la meilleure pratique

Que faire s'il y a trop de niveaux à passer dans la première méthode. Par exemple, il commence par init et appelle la méthode après l'avoir passée, il y a [n] méthodes. -> méthode2 -> méthode3. Cela nécessite un passage au premier niveau...

Il existe également deux méthodes, laquelle est la plus performante ? La deuxième méthode équivaut à obtenir les propriétés de l'objet à chaque fois. Il semble que les performances du passage direct des paramètres seront moins bonnes ? ~

女神的闺蜜爱上我女神的闺蜜爱上我2663 Il y a quelques jours813

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

  • 三叔

    三叔2017-07-05 11:02:45

    Transfer, utilisez moins souvent les variables globales

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-07-05 11:02:45

    Les variables globales ne sont pas comptées dans votre exemple !

    Accrochez-vous aux propriétés de l'objet et n'affectera pas l'utilisation des variables à l'intérieur de la méthode ! Cela ne polluera pas non plus le scope !

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-07-05 11:02:45

    Ce que vous avez implémenté ici n'est pas une variable globale, elle est simplement attachée aux propriétés de l'objet. Pourquoi est-il nécessaire de déclarer une variable ici Je ne vous ai pas vu réellement opérer celadata,如果只是想引用一下值得话,那么直接用$rootScope.testN'est-ce pas génial ?

    répondre
    0
  • Annulerrépondre