Javascript 개체 참조 및 개체를 값으로 비교하는 방법

JavaScript의 객체는 중요한 데이터 유형입니다. JavaScript의 모든 것은 객체, 즉 메서드가 있지만 JavaScript에서 프로그래머가 정의한 객체는 다른 많은 프로그래밍 언어와 마찬가지로 실제 객체를 나타내는 특수 데이터 유형입니다. 이러한 개체는 키 값 쌍의 속성을 가진 독립 실행형 엔터티입니다. 속성의 값은 함수가 될 수 있으며 이러한 속성을 메서드라고 합니다. 객체는 많은 JavaScript 프로그래밍 패러다임을 구성합니다. 개체를 처음부터 설명하는 것은 이 블로그의 범위를 벗어납니다. 참조할 수 있습니다MDN's explanation on objects.
프리미티브 비교는 객체 비교와 매우 간단하고 다릅니다. 코드에서 살펴볼 주요 차이점은 프리미티브는 전체 값으로 복사 및 저장되는 반면 객체는 '참조'로 복사 및 저장된다는 것입니다. 이것이 프로그래밍 방식으로 무엇을 의미하는지 아래에서 살펴보겠습니다.

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

좋은 웹페이지 즐겨찾기