자바스크립트 객체 심층 분석.
18207 단어 tutorialwebdevprogrammingjavascript
JavaScript에서는 거의 모든 것이 객체입니다.
JavaScript 개체에 대해 자세히 살펴보겠습니다.
개체: JavaScript의 개체는 기본 형식이 아닌 데이터 구조일 뿐입니다. 중괄호를 사용하여 개체를 정의하고 쉼표로 구분된 키-값 쌍을 넣을 수 있습니다.
예:
const user = {
name:"Hemendra",
nickname:"Hemu",
email:"[email protected]",
city:"bhilwara"
}
개체에 대한 CRUD 작업
만들다
let student = {}; // an empty array
student.name = "Hemendra Khatik";
//important -> student["name"]="Hemendra Khatik" is also valid
student.branch = "CSE";
student.age = 25;
console.log(student); // will print the below structure
/*
{
name:"Hemendra Khatik",
branch:"CSE",
age:25
}
*/
또는 한 번에 모든 키 값
let user = {
name:"Hemendra",
nickname:"Hemu",
email:"[email protected]",
city:"bhilwara"
}
읽다
.
연산자를 사용하여 객체의 값에 액세스합니다.user.name; // to access the "Hemendra".
user.city; // to access the "bhilwara".
user.username; // will be undefined because it is not present in the user object.
대괄호를 사용하여 객체의 속성에 액세스할 수도 있습니다.
user["name"]; // to access the "Hemendra".
user["city"]; // to access the "bhilwara".
업데이트
객체를 업데이트합니다.
student.age = 21; // now age is changed from 25 to 21
삭제
개체에서 키를 삭제합니다.
delete student.name; // to delete the name key from student object
기타 유용한 방법
객체에서만 키를 인쇄합니다.
const user = {
username:"aamchora",
email:"[email protected]",
};
Object.keys(user);
/*
Above expression returns an array containing
keys only from an object ["username", "email"]
*/
개체에서만 값을 인쇄합니다.
const user = {
username:"aamchora",
email:"[email protected]",
};
Object.values(user);
/*
Above expression returns an array containing
values only from an object ["aamchora", "[email protected]"]
*/
JavaScript 개체 고정
const user = {
username:"aamchora",
email:"[email protected]",
};
Object.freeze(user);
/*
Above expression freezes the object.
It means we cannot add, remove or update its properties.
It will not throw any error unless you are in strict mode but
there will be no effect of value change on your object.
*/
user.username = "NewUserName"; // --> will not work
user.newKey = "xyz"; // --> will not work
delete user.email; // --> will not work
console.log(user);
/*
{
username:"aamchora",
email:"[email protected]",
}
*/
개체 복제
You can not copy non-primitive type data structure as you copy primitive type data structure.
EG: 기본이 아닌 유형의 데이터 구조.
let a = 10;
let b = a;
b= b + 1;
console.log(a) // 10
console.log(b) // 11
EG: 원시 유형 데이터 구조.
let obj = {
a:10;
};
let obj2 = obj;
obj2.a = 12;
if(obj === obj2){
console.log("obj and obj2 are same");
};
// above condition will be true
console.log(obj) // {a:12}
console.log(obj2) // {a:12}
자바스크립트의 이상한 동작을 이해하려면 아래 블로그를 읽어보세요.
We can use
Object.assign(targetObject, sourceObject)
to clone an object.
const obj = { a: 1 };
const obj2 = Object.assign({}, obj);
obj2.a = 2;
if(obj === obj2){
console.log("obj and obj2 are same");
}else{
console.log("obj and obj2 are different");
};
// above condition will be false here
console.log(obj); // { a: 1 }
console.log(obj2); // { a: 2 }
얕은 사본
개체의 얕은 복사본은 속성이 복사본이 만들어진 원본 개체의 속성과 동일한 참조(동일한 기본 값을 가리킴)를 공유하는 복사본입니다.
참고: 얕은 복사에는
Object.assign(targetObject, sourceObject)
를 사용합니다.Shallow copy를 이해하려면 아래 예를 살펴보십시오.
const obj = {
a:1
}
const obj2 = {
b:2,
c:obj // here c's value is a reference to the other object called obj
}
const copy = Object.assign({},obj2); // here obj2 is a source object
// changing the copied object's value
copy.c.a = 1111;
if(copy.c.a === obj.a){
console.log("obj and obj2 are same");
}
// above condition will be true
깊은 복사
개체의 전체 복사본은 속성이 복사본이 만들어진 소스 개체의 속성과 동일한 참조(동일한 기본 값을 가리킴)를 공유하지 않는 복사본입니다.
참고: Deep copy의 경우
JSON.parse(JSON.stringify(sourceObject))
를 사용합니다.딥카피를 이해하기 위해 아래 예시를 보라.
const obj = {
a:1
}
const obj2 = {
b:2,
c:obj // here c's value is a reference to the other object called obj
}
const copy = JSON.parse(JSON.stringify(obj2)) // here obj2 is a source object
// changing the copied object's value
copy.c.a = 1111;
if(copy.c.a === obj.a){
console.log("obj and obj2 are same");
}else{
console.log("obj and obj2 are not same");
}
// above condition will be false
더 많은 블로그 게시물을 보려면 나를 따르십시오.
이 블로그가 도움이 되었는지 알려주세요.
Reference
이 문제에 관하여(자바스크립트 객체 심층 분석.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aamchora/javascript-objects-in-depth-5g71텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)