다음을 사용하여 어레이를 복제 할 수 있습니다 Array#slice
.
console.log(s); // ["bye"], i.e. incorrect
console.log(s.slice()); // ["hi"], i.e. correct
console.log
이 문제가없는 대신 사용할 수있는 기능 은 다음과 같습니다.
console.logShallowCopy = function () {
function slicedIfArray(arg) {
return Array.isArray(arg) ? arg.slice() : arg;
}
var argsSnapshot = Array.prototype.map.call(arguments, slicedIfArray);
return console.log.apply(console, argsSnapshot);
};
개체의 경우 불행히도 가장 좋은 방법은 WebKit이 아닌 브라우저로 먼저 디버깅하거나 복제 할 복잡한 함수를 작성하는 것입니다. 키 순서가 중요하지 않고 기능이없는 단순한 객체로만 작업하는 경우 항상 다음을 수행 할 수 있습니다.
console.logSanitizedCopy = function () {
var args = Array.prototype.slice.call(arguments);
var sanitizedArgs = JSON.parse(JSON.stringify(args));
return console.log.apply(console, sanitizedArgs);
};
이 모든 메서드는 분명히 매우 느리므로 일반적인 console.log
s 보다 훨씬 더 많이 디버깅을 완료 한 후에 제거해야합니다.