10
votes

En JavaScript, comment appelle-t-je une méthode de classe d'une autre méthode de la même classe?

J'ai ceci: xxx

je veux appeler init dans la course. Comment puis-je faire cela?


2 commentaires

Il n'y a pas de classes ou de méthodes de classe dans JavaScript


@Chris ballance qui n'est pas explicitement vrai ..


4 Réponses :


7
votes

Utilisez this.init () code>, mais ce n'est pas le seul problème. N'appelez pas de nouvelles sur vos fonctions internes.

var Test = new function() {
    this.init = function() {
        alert("hello");
    };

    this.run = function() {
        // call init here
        this.init();
    };
}

Test.init();
Test.run();

// etc etc


4 commentaires

Mais avec cela, je ne peux pas appeler test.init () d'une autre classe. Comment puis-je le faire pour que test est un singleton mais peut toujours appeler init () de cette façon?


Fonctionne bien pour moi, Firebug ne se plaint pas. Avez-vous supprimé le "nouveau" des déclarations de fonction à l'intérieur du test?


Vous avez oublié de laisser tomber le nouveau de la fonction supérieure ... le constructeur


Pourriez-vous mettre à jour cette réponse pour ES6, en utilisant classe ? Je veux savoir. Merci!



1
votes
var Test = function() {
    this.init = function() {
        alert("hello");
    } 
    this.run = function() {
        this.init();
    }
}
Unless I'm missing something here, you can drop the "new" from your code.

1 commentaires

Ce qui est parfaitement bien ... non?



2
votes

essayez ceci, xxx

merci.


0 commentaires

4
votes

Au lieu de cela, essayez de l'écrire de cette façon:

function test() {
    var self = this;
    this.run = function() {
        console.log(self.message);
        console.log("Don't worry about init()... just do stuff");
    };

    // Initialize the object here
    (function(){
        self.message = "Yay, initialized!"
    }());
}

var t = new test();
// Already initialized object, ready for your use.
t.run()


0 commentaires