2017-10-06 3 views
0

j'ai écrit une classe minimale JavaScript qui accepte 2 paramètres pour le constructeur comme suit:constructeur d'appel JavaScript avec des paramètres de méthode

class myClass { 
    constructor(name, age) { 
    this.name = name; 
    this.age = age; 
    } 

    startProcess() { 
    // call other functions that use this.name and this.age 
    } 
} 

var init = new myClass('John', 29); 
init.startProcess(); 

est-il un moyen de supprimer les paramètres John et 29 lors de l'initialisation myClass et les ajouter à init.startProcess? Je veux toujours que ces paramètres soient accessibles à partir d'autres fonctions.

Fondamentalement, je veux faire ceci et garder la même fonctionnalité.

var init = new myClass(); 
init.startProcess('John', 29); 

Répondre

3

Retirez le constructeur et déplacer le code d'initialisation à startProcess:

class myClass { 
 
    startProcess(name, age) { 
 
    this.name = name; 
 
    this.age = age; 
 
    } 
 
} 
 

 
const init = new myClass(); 
 
init.startProcess('John', 29); 
 

 
console.log(init);

1

Il suffit de passer à la fonction startProcess et les émettent de la constructor. Cela vous permettra d'initialiser les valeurs sous deux formes. Si vous ne transmettez rien au constructor, il créera des variables mais définira les valeurs à undefined. Aussi parce que voici un duplicateur de code, vous pouvez ajouter cette partie dans le private function

class myClass { 
 

 
    constructor(name, age) { 
 
    this._init(name, age); 
 
    } 
 

 
    startProcess(name, age) { 
 
    this._init(name, age); 
 
    // Other logics 
 
    } 
 
    
 
    _init(name, age) { 
 
    this.name = name; 
 
    this.age = age; 
 
    } 
 
} 
 

 
const init = new myClass(); 
 
init.startProcess('John', 29); 
 

 
console.log(init);