आप किसी सरणी को क्लोन कर सकते हैं 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);
};
वस्तुओं के मामले में, दुर्भाग्यवश, सबसे अच्छा तरीका सबसे पहले एक गैर-वेबकिट ब्राउज़र के साथ डिबग करना या क्लोन करने के लिए एक जटिल फ़ंक्शन लिखना प्रतीत होता है। यदि आप केवल साधारण वस्तुओं के साथ काम कर रहे हैं, जहां कुंजियों का क्रम मायने नहीं रखता है और कोई कार्य नहीं हैं, तो आप हमेशा कर सकते हैं:
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
एस की तुलना में भी अधिक , आपको डीबगिंग करने के बाद उन्हें बंद करना होगा।