Javascript 개체 참조 및 개체를 값으로 비교하는 방법
프리미티브 비교는 객체 비교와 매우 간단하고 다릅니다. 코드에서 살펴볼 주요 차이점은 프리미티브는 전체 값으로 복사 및 저장되는 반면 객체는 '참조'로 복사 및 저장된다는 것입니다. 이것이 프로그래밍 방식으로 무엇을 의미하는지 아래에서 살펴보겠습니다.
const string1 = 'Hello world'
let string2 = string1
console.log(string1 === string2) //true
//for objects
const person1 = {
name : 'jay',
age : 30,
nationality : Kenyan
}
const person2 = {
name : 'jay',
age : 30,
nationality : Kenyan
}
//lets compare the two objects
console.log(person1 === person2) //false
위의 코드는 전체 string1 값이 string2에 복사되고 그 결과 콘솔 로그에 실제 부울 값이 표시되므로 프리미티브 비교가 얼마나 간단한지 보여줍니다. 그러나 정확히 동일한 속성을 가지고 있음에도 불구하고 두 개체(person1 및 person2)를 비교하는 콘솔에서 잘못된 결과를 얻었습니다. 개체는 값이 아닌 참조로 저장 및 복사되기 때문입니다. 아래 코드에서 증명하자
const person1 = {
name : 'jay',
age : 30,
nationality : Kenyan
}
let person2 = person1
console.log(person1 === person2) //true
위의 코드에서 우리는 콘솔 로그 true 부울 값 ref를 얻었습니다. 이것은 개체가 참조에 의해 복사되었음을 증명합니다. 속성을 선언하고 첫 번째 객체(person1)에 할당함으로써 우리는 속성인 객체 참조를 생성하고 person1을 person2에 할당함으로써 컴파일러에게 person2 객체가 person1 참조를 가리키도록 지시했습니다. 이를 더 증명하기 위해 person2의 이름을 변경하여 person1의 이름을 변경해 보겠습니다.
const person1 = {
name : 'jay',
age : 30,
nationality : Kenyan
}
let person2 = person1
//change person2's name
person2.name = 'mohamed'
//console log person1's name
console.log(person1.name) //mohamed
위의 코드에서 우리는 두 개체가 하나의 참조를 가리키고 개체 중 하나를 사용하여 참조를 변경하는 방법을 확인합니다.
이것은 JavaScript에서 중요한 개념이며 여러 면에서 중요합니다. 개발자의 유연성을 제한하지 않으며 javascript에는 개발자가 필요할 수 있는 일부 상황에서 값으로 객체를 비교하는 특별한 방법이 있습니다. JSON.stringify 방법을 사용합니다. 이 메서드는 개체 속성을 JSON 문자열로 변환하고 속성을 문자열로 비교합니다. 다음은 예입니다.
const person1 = {
name : 'jay',
age : 30,
nationality : Kenyan
}
const person2 = {
name : 'jay',
age : 30,
nationality : Kenyan
}
console.log(JSON.stringify(person1) === JSON.stringify(person2)) //true
Reference
이 문제에 관하여(Javascript 개체 참조 및 개체를 값으로 비교하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mohamedcaliph/javascript-object-reference-and-how-to-compare-objects-by-values-em1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)