Object. assign 의 용법 과 주의 점
1961 단어 자바 script
4. 567914. source 에 있 는 매 거 진 속성 을 4. 567914 로 복사 합 니 다.target 의 기 존 속성 과 이름 을 바 꾸 면 덮어 씁 니 다.동시에 후속 source 는 앞의 source 의 동명 속성 을 덮어 씁 니 다.
⚠️Object. assign 은 속성 값 을 복 사 했 습 니 다. 속성 값 이 참조 형식 이 라면 복 사 된 것 은 참조 주소 이 고 인용 공유 문제 가 존재 합 니 다.
예 를 들 어 설명:
const o1 = { name: 'fedaily' }
const o2 = { topic: ['react', 'nodejs'] }
const o3 = Object.assign({}, o1, o2)
// o3 { name: 'fedaily', topic: ['react', 'nodejs'] }
o3.topic.push('css')
// o3 { name: 'fedaily', topic: ['react', 'nodejs', 'css'] }
// o2 { topic: ['react', 'nodejs', 'css'] }
// ⚠️ topic
따라서 Object. assign 을 즐겁게 사용 하려 면 인용 유형 이 있 는 지 에 대한 특별한 관심 이 필요 합 니 다.
만약 우리 가 인용 유형 을 처리 해 야 한다 면 어떻게 해 야 합 니까? 이것 은 대상 의 복사 와 관련 이 있 습 니 다. lodash 의 를 참고 하 십시오.clone, _clone Deep 등의 방법.
그리고 MDN Object. assign 에 관 한 poly fill 을 첨부 하여 내부 실현 을 이해 하 는 동시에 이 방법 을 잘 파악 할 수 있 습 니 다.
if (typeof Object.assign != 'function') {
Object.assign = function (target, varArgs) { // .length of function is 2
'use strict';
if (target == null) { // TypeError if undefined or null
throw new TypeError('Cannot convert undefined or null to object');
}
var to = Object(target);
for (var index = 1; index < arguments.length; index++) {
var nextSource = arguments[index];
if (nextSource != null) { // Skip over if undefined or null
for (var nextKey in nextSource) {
// Avoid bugs when hasOwnProperty is shadowed
if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
to[nextKey] = nextSource[nextKey];
}
}
}
}
return to;
};
}
전단 수집가 (마이크로 신호: fedaily) 는 전 네트워크 의 우수한 전단 기술 정 보 를 수집 하여 당신 과 공유 하고 함께 성장 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.