2017-05-12 3 views
0
class Classname { 
    constructor(args) { 
     // code 
    } 

    // this method is added to Classname.prototype 
    function_name(argument) { 
     // body... 
    } 

    //how to add objects similarly to prototype 
} 

Gibt es eine Möglichkeit, ein Objekt zu Classname.prototype hinzuzufügen?So fügen Sie dem Prototyp in ES6 ein Objekt hinzu

+2

Welches Problem versuchen Sie wirklich zu lösen. Das Hinzufügen eines Objekts zu "Klassenname.prototyp" führt dazu, dass dieses Objekt unter allen Instanzen Ihrer Klasse geteilt wird, was normalerweise nicht Ihren Vorstellungen entspricht. Aber wenn Sie das wollen, können Sie dem Prototyp direkt zuweisen: 'Classname.prototype.somePropertyName = {Gruß:" Hallo "};' nach der Definition von 'Klassenname'. ES6-Prototypen funktionieren genauso wie in ES5. ES6-Syntax ist nur Zucker für die Einrichtung des Prototyps mit schöner Syntax. – jfriend00

+0

ClassName.prototype.test = {} –

+0

Gibt es einen anderen Weg? –

Antwort

-1
Classname.prototype.myObject = {}; 

Oder

Classname.prototype.myObject = Object.assign({ foo: 'bar'}, { bar: 'baz' }, anotherObject) 

Für z.B.

const User = function() {}; 
User.prototype.info = Object.assign({ foo: 'bar' }, { bar: 'baz' }); 

const bob = new User(); 
bob.info; // => { foo: 'bar', bar: 'baz' } 
+0

Ihre Beispiele sind seltsam. Warum setzen Sie 'Classname.prototype.myObject = {}', wenn Sie es in der nächsten Zeile mit '{foo: 'bar'}' überschreiben? Und das 'Object.assign()' in Ihrem zweiten Beispiel ist völlig nutzlos. 'Object.assign ({foo: 'bar'})' und '{foo: 'bar'}' sind identisch. Das Objekt wird genau so zurückgegeben, wie es an "Object.assign()" übergeben wird. – Thomas

+0

Sie haben Recht. Sie sind komisch. Hauptsächlich, weil ich nicht richtig erklärt habe, oder erweitern, wo ich sollte. – Nick

0

Mit Getter und Setter können Sie Eigenschaften für den Prototyp innerhalb des Klassenkörpers definieren. Aber das ist irgendwie ausführlich.

Zum Beispiel.

const obj = { 
 
    name: 'Shared' 
 
} 
 
class A { 
 
    get a() { 
 
    return obj 
 
    } 
 
} 
 

 
const a1 = new A 
 

 
console.log(A.prototype.hasOwnProperty('a')) 
 
console.log(a1.hasOwnProperty('a')) 
 
console.log(a1.a)

Verwandte Themen