Ich habe einige Objekte im Array und möchte einige Requisiten von Fabrik zu Objekt mit Typ - Datum hinzufügen.So fügen Sie dem vorhandenen Objekt eine Prototypeigenschaft hinzu
Ich muss alte Werte von diesem Objekt nicht entfernen. Ich versuche, es auf diese Weise zu tun:
angular.forEach($scope.things, function(item) {
if(item.type === 'date') {
item = DateFactory.prototype.createFactory();
}
})
aber es funktioniert nicht, wo ich falsch? Plunker example
Was ist 'createFactory'? Warum rufst du eine Methode vom Prototyp an? – Bergi
In diesem Fall ist die Verwendung einer Factory in erster Linie ein Fehler, da diese Factory Klassen * (keine Instanzen einer Klasse) * erstellt/zurückgibt. Um genau zu sein: eine neue Inkarnation derselben statischen/unveränderten Klasse, jedes Mal wenn diese Fabrik aufgerufen wird. Was Sie wahrscheinlich in Ihrem Code-Beispiel tun möchten, ist etw. mehr wie '$ scope.things = $ scope.things.map (item => item.type === 'date'? Object.assign (new DateClass(), item): item)' Aber damit das funktioniert, du Sie müssen Ihren Code ändern, damit Sie anstelle einer Factory, die bei jedem Aufruf eine neue Date-Klasse erstellt, die DateClass bereitstellen. – Thomas
und die Methode 'DateFactory.prototype.createFactory()' macht überhaupt keinen Sinn; weder, dass es existiert noch was es tut. – Thomas