이 글에서는 어느 정도 참고할만한 가치가 있는 js에서의 복사 방법을 주로 소개하고 있습니다. 필요한 친구들이 참고할 수 있도록 하겠습니다.
딥 카피와 얕은 카피가 있습니다. js에는 일상적인 작업 검토를 용이하게 하기 위한 두 가지 일반적인 방법이 아래에 요약되어 있습니다. #
var newObj = JSON.parse(JSON.stringify( someObj ) )
#🎜🎜 # 3. es6 스프레드 연산자 스프레드 연산자 구문
const objA = { name: 'cc', age: 18 } const objB = { address: 'beijing' } const objC = {} // 这个为目标对象 const obj = Object.assign(objC, objA, objB) // 我们将 objA objB objC obj 分别输出看看 console.log(objA) // { name: 'cc', age: 18 } console.log(objB) // { address: 'beijing' } console.log(objC) // { name: 'cc', age: 18, address: 'beijing' } console.log(obj) // { name: 'cc', age: 18, address: 'beijing' } // 是的,目标对象ObjC的值被改变了。 // so,如果objC也是你的一个源对象的话。请在objC前面填在一个目标对象{} Object.assign({}, objC, objA, objB)
#🎜🎜 #
4. 순회var obj = { 'data': [11, 2, 3], 'name': 'mfg', fn: function() {} }; var objNew = { ...obj };
2. 딥 카피
1. 🎜🎜#
function sallowCopy(source) { // source 不是对象,而是【原始类型】的情况 // 原始类型说明详见http://www.jianshu.com/p/b161aeecb6d6 if (null == source || "object" != typeof source) return source; // 其他情况都将 source 当作简单对象来处理 var target = {}; for (var key in source) { if (source.hasOwnProperty(key)) { // 仅拷贝自身的属性 target[key] = source[key]; } } return target; }/*这个浅拷贝会将source对象上的所有[可枚举属性]都拷贝到target对象上,不包括原型链上的属性。*/
3 불변 라이브러리의 도움으로 다수의 딥 카피가 있습니다
import merge from "lodash/object/merge";function commentsById(state = {}, action) { switch(action.type) { default : { if(action.entities && action.entities.comments) { return merge({}, state, action.entities.comments.byId); } return state; } } }
const { Map } = require('immutable') const map1 = Map({ a: 1, b: 2, c: 3 }) const map2 = map1.set('b', 50) map1.get('b') // 2map2.get('b') // 50尽量保持数据
5.JSON 객체 방식
$.extend(true, {}, obj)
이 두 가지 방식은 확실히 익숙합니다. 두 개의 기본 JSON 객체를 사용하면 객체의 전체 복사를 매우 편리하게 실현할 수 있습니다.
이 방법에는 단점도 있습니다.
은 문자열, 숫자, 배열 등과 같이 json으로 표현할 수 있는 속성만 복사할 수 있습니다. ., Function, Regexp 등 json으로 표현되는 속성이 손실됩니다
객체의 프로토타입 체인이 손실됩니다
# 🎜🎜# 복제 효율성이 낮음위의 단점에도 불구하고 이 방법은 대부분의 상황을 처리하기에 충분합니다. 6.Recursive copyvar obj2 = JSON.parse(JSON.stringify(obj1))
위 내용은 모두의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!
JS 문자 숫자 변환 방법
js 비동기 for 루프 소개위 내용은 JS에서 복사하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!