वेनिला जेएस:
@ इवान का जवाब यहां सबसे अच्छा लगता है। बस (ab) JSON.parse / stringify का उपयोग प्रभावी ढंग से ऑब्जेक्ट की कॉपी बनाने के लिए करते हैं।
console.log(JSON.parse(JSON.stringify(test)));
JQuery के विशिष्ट समाधान:
आप किसी निश्चित समय पर किसी वस्तु का एक स्नैपशॉट बना सकते हैं jQuery.extend
console.log($.extend({}, test));
वास्तव में यहाँ क्या हो रहा है jQuery के साथ एक नई वस्तु बना रहा है test
वस्तु की सामग्री के है, और यह लॉगिंग (ताकि यह नहीं बदलेगा)।
AngularJS (1) विशिष्ट समाधान:
कोणीय एक copy
फ़ंक्शन प्रदान करता है जिसका उपयोग उसी प्रभाव के लिए किया जा सकता है:angular.copy
console.log(angular.copy(test));
वेनिला जेएस आवरण समारोह:
यहाँ एक फ़ंक्शन है जो रैप करता है 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})