2017-07-01 2 views
-1

Ich habe eine JavaScript-KlasseWie mache ich eine JavaScript-Klassenmethode?

class A { 
    methodA(){ 
    //doing some operations with arguments 
    } 
    methodB(){ // i need to refer this function to `returns` function 
    } 
    // i am expecting something like below 
    methodB : A.methods.methodA 
    // NOT like below 
    methodB (...args){ 
    return this.methodA(...args); 
    } 
} 

Jede Idee, über die einfachste Art und Weise Nachbau einer Methode in JavaScript-Klasse zu machen?

EDIT: Bitte geben Sie auch eine Lösung, wenn methodA und methodB einige static Methoden wären.

+2

Wenn das richtige 'return' Schlüsselwort ist [reserviert] (https://www.w3schools.com/js/js_reserved.asp). –

+0

@ JanCiołek aktualisiert die Frage – codeofnode

Antwort

2

Sie konnten sie außerhalb der Klasse zB kopieren:

class A{ 
returns(){ 
} 
static returns(){ 
} 
} 

A.sth=A.returns; 
A.prototype.sth=A.prototype.returns; 

Sie auch im Konstruktor binden konnte:

class A { 
constructor(){ 
    this.sth=this.returns.bind(this); 
} 
returns(){ 
//doing some operations with arguments 
} 
} 

(new A).sth() 

Oder Sie könnten zwei Zeiger auf eine globale Funktion (noch nicht möglich hinzufügen mit Klassensyntax):

function returns(){ 
    return true; 
} 

function A(){} 
A.prototype={ 
returns:returns, 
sth:returns 
}; 
//static: 
Object.assign(A,{ 
returns:returns, 
sth:returns 
}); 

(new A).sth(); 
(new A).returns(); 
A.sth(); 
A.returns(); 
+0

nice Ansatz, Irgendeine Idee, wenn methodA und methodB statische Methode der Klasse wäre? – codeofnode

+0

@codeofnode Klassensyntax ist noch nicht wirklich nützlich in JS. Ich hoffe, dass der Klasseneigentumsvorschlag bald Teil der Spezifikation wird (macht solche Sachen einfacher). Die alte Wegfunktionskonstruktorsyntax unterstützt auch statische Methoden, so dass der zweite Code auch mit statischen Requisiten funktionieren würde ... –

+0

@codeofnode eigentlich ist es möglich:/siehe edit –