바닐라 JS :
@evan의 대답 은 여기에 가장 좋습니다. JSON.parse / stringify를 사용하여 객체의 복사본을 효과적으로 만듭니다.
console.log(JSON.parse(JSON.stringify(test)));
JQuery 전용 솔루션 :
특정 시점에 객체의 스냅 샷을 만들 수 있습니다. jQuery.extend
console.log($.extend({}, test));
실제로 여기서 발생하는 것은 jQuery가 test
객체의 내용 으로 새 객체를 생성 하고 로깅하는 것이므로 변경되지 않습니다.
AngularJS (1) 특정 솔루션 :
Angular는 copy
동일한 효과에 사용할 수 있는 기능을 제공합니다 .angular.copy
console.log(angular.copy(test));
바닐라 JS 래퍼 기능 :
다음은 랩핑 console.log
하지만 로그 아웃하기 전에 객체를 복사 하는 함수입니다 .
나는 대답에서 비슷하지만 덜 강력한 기능에 대한 응답으로 이것을 썼습니다. 그것은 여러 인수를 지원하고, 것입니다 하지 그렇지 않은 경우 일을 복사하려고 일반 객체.
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))
}
사용법 예 :consoleLogWithObjectCopy('obj', {foo: 'bar'}, 1, /abc/, {a: 1})