Vanilla JS:
@ evans Antwort scheint hier am besten zu sein. Verwenden Sie einfach (ab) JSON.parse / stringify, um effektiv eine Kopie des Objekts zu erstellen.
console.log(JSON.parse(JSON.stringify(test)));
JQuery-spezifische Lösung:
Mit können Sie zu einem bestimmten Zeitpunkt einen Schnappschuss eines Objekts erstellen jQuery.extend
console.log($.extend({}, test));
Was hier tatsächlich passiert, ist, dass jQuery mit dem ein neues Objekt erstellt test
Inhalt Objekts erstellt und dieses protokolliert (damit es sich nicht ändert).
AngularJS (1) spezifische Lösung:
Angular bietet eine copy
Funktion, die mit demselben Effekt verwendet werden kann:angular.copy
console.log(angular.copy(test));
Vanilla JS-Wrapper-Funktion:
Hier ist eine Funktion, die umschließt, console.log
aber eine Kopie aller Objekte erstellt, bevor sie abgemeldet werden.
Ich habe dies als Antwort auf einige ähnliche, aber weniger robuste Funktionen in den Antworten geschrieben. Es unterstützt mehrere Argumente und versucht nicht , Dinge zu kopieren, wenn es sich nicht um reguläre Objekte handelt.
function consoleLogWithObjectCopy () {
var args = [].slice.call(arguments);
var argsWithObjectCopies = args.map(copyIfRegularObject)
return console.log.apply(console, argsWithObjectCopies)
}
function copyIfRegularObject (o) {
const isRegularObject = typeof o === 'object' && !(o instanceof RegExp)
return isRegularObject ? copyObject(o) : o
}
function copyObject (o) {
return JSON.parse(JSON.stringify(o))
}
Anwendungsbeispiel :consoleLogWithObjectCopy('obj', {foo: 'bar'}, 1, /abc/, {a: 1})