Ich benutze Angular.js 1.3.x. In früheren Versionen von Angular (einschließlich 1.3.0-beta5), der folgende Code der Eigenschaften vom Prototyp direkt auf das neue Objekt kopieren würde: Wie man Prototyp mit angular.copy() behält?
function x() {};
x.prototype.logIt = function() {console.log("it")};
var src = new x(); // x has custom properties on the prototype
var dest = {};
angular.copy(src, dest);
dest.logIt(); // "TypeError" in Angular 1.3.0+
jedoch in Angularjs 1.3.0+, die Eigenschaften
total verloren, trotz der Tatsache, vom Prototyp sind, dass die migration guide for 1.2 to 1.3 sagt:Dies ändert angular.copy, so dass er den Prototyp des ursprünglichen Objekts auf das kopierte Objekt gilt. Zuvor würde angular.copy Eigenschaften der Prototypkette des Originalobjekts direkt auf das kopierte Objekt kopieren.
Wie behalte ich die Eigenschaften vom Prototyp?
Für jedermann mit Object.defineProperty und diese zu lesen: Die Eigenschaft muss als zählbare definiert werden : True, damit es im kopierten Objekt erscheint. –
Protip: Der einfachste Weg, 'Foo's Prototyp beim Kopieren zu erhalten, ist' angular.copy (Foo, Foo.prototype); '. – Bryce
Dies beantwortet nicht direkt die Frage, bietet nur eine Begründung für das Problem. – trysis