깊이 있는 JS 객체
그러니 끝까지 읽으시고 당신이 이 책에서 무엇인가를 배우기를 바랍니다.
사물
객체는 연결된 키/값 쌍의 모음인 JavaScript에서 가장 유용한 데이터 구조 중 하나입니다.
객체 생성
새 빈 개체는 두 가지 방법으로 만들 수 있습니다.
Object()
생성자 함수const myObject = {}; // Using literal notation
const myObject = new Object(); // Using the Object() constructor function
그러나 새 개체를 만드는 데 권장되는 방법은
Object()
생성자 함수가 약간 느리고 장황하므로 리터럴 표기법을 사용하는 것입니다.개체에 속성 추가
점 표기법과 대괄호 표기법을 사용하여 해당 값과 함께 개체에 새 속성을 추가할 수 있습니다.
const souvik = {};
souvik.learning= true;
souvik["status"] = "Learning and implementing";
souvik.work = function () {
console.log("Working as Full Stack Web Dev!");
};
이러한 모든 속성을 추가한 후 개체는 다음과 같이 보일 것입니다.
{
learning: true,
status: "Learning and implementing",
work: function () {
console.log("Working as Full Stack Web Dev!");
}
}
개체의 속성 수정
개체 내의 데이터는 변경 가능하므로 데이터를 수정할 수 있습니다.
const souvik = {
learning: true,
status: "Learning and implementing",
work: function () {
console.log("Working as Full Stack Web Dev!");
}
}
속성 값을 수정하려면 점 또는 대괄호 표기법을 자유롭게 사용하세요.
souvik.learning = false;
souvik["status"] = "Building projects";
개체의 속성 제거
객체 내의 데이터는 변경 가능하므로
delete
연산자를 사용하여 객체에서 모든 속성을 삭제할 수 있습니다.delete souvik.learning; //true
인수 전달
객체는 JS에서 변경 가능합니다. 따라서 개체를 함수에 전달하거나 원래 개체의 복사본을 만들고 두 경우 모두에서와 같이 원래 개체의 값을 수정하는 개체의 속성 값을 수정하는 경우 개체의 복사본은 동일한 참조 또는 메모리 위치를 가리킵니다. 속성 값을 업데이트하면 개체의 모든 복사본에 반영됩니다.
let originalObject = {
status: "online"
};
function setToOffline(object) {
object.status = "offline";
}
setToOffline(originalObject);
originalObject.status; // "offline"
반면에 원시 데이터 유형(문자열, 부울, 숫자)은 변경할 수 없습니다. 기본 인수를 전달하면 함수는 다른 메모리 위치를 가리키는 동일한 로컬 복사본을 만들고 필요에 따라 작업을 수행합니다. 그런 식으로 실제 데이터를 업데이트하지 않습니다.
function changeToEight(n) {
n = 8; // whatever n was, it is now 8... but only in this function!
}
let n = 7;
changeToEight(n);
console.log(n); // 7
이 키워드
메서드는 예약 키워드
this
를 사용하여 호출된 개체의 속성에 액세스할 수 있습니다.const souvik = {
learning: true,
status: "Learning",
work: function () {
console.log(`${this.status} Full Stack Web Dev!`);
}
}
souvik.work() //Learning Full Stack Web Dev!
즉,
this
키워드는 개체가 자체 속성에 액세스하고 조작하는 데 도움이 된다고 말할 수도 있습니다. 점 연산자를 사용하여 메서드를 호출하는 이러한 방법을 암시적 바인딩이라고 합니다. 여기서 this
는 메서드가 호출되는 데 사용되는 개체를 나타냅니다.this
가 명시적 바인딩으로 알려진 call(), apply() 및 bind() 메서드를 사용하여 일부 다른 객체를 가리키는 메서드를 호출하는 다른 방법이 있습니다. 자세한 내용을 보려면 기사를 읽으십시오.창 개체
이제
this
키워드에 대해 알고 있듯이 exploringThis
함수를 호출하면 출력이 어떻게 될까요?function exploringThis() {
console.log(this)
}
exploringThis();
이 경우 또는 모든 일반 함수
this
는 전역 객체window
를 가리킵니다.
window
object is provided by the browser and globally accessible by JS code using thewindow
keyword. This object is not part of the JavaScript specification.
모든 전역 변수, 함수는
window
개체의 속성으로 액세스할 수 있습니다.var learning = "objects in JS";
function work() {
console.log("Writing blog on JS objects")
}
window.learning === learning; //true
window.work === work; //true
Only declaring variables with the
var
keyword will add them to thewindow
object. If you declare a variable withlet
orconst
, it won't be added as the property to thewindow
object.
let learning = "objects in JS";
window.learning === learning; //false
개체 메서드
새 빈 개체를 만드는 데 사용할 수 있는
object()
생성자 함수에는 몇 가지 고유한 메서드가 있습니다. 이러한 방법은 다음과 같습니다.const souvik = {
learning: true,
status: "Learning",
}
Object.keys(souvik); // ["learning", "status"]
Object.values(souvik); // [true, "Learning"]
이러한 메서드는 개체의 키 또는 값과 관련하여 약간의 조작을 수행하려는 경우에 정말 유용합니다.
이에 대한 자세한 내용은 Object MDN , this keyword MDN , window object MDN 을 참조하십시오.
지금까지 읽어주셔서 감사합니다🙏
이 블로그가 유용하다고 생각되면 네트워크와 공유하고 주제에 대해 의심스러운 점이 있으면 언제든지 의견을 말하십시오.
GitHub , , 에서 저와 👋를 연결할 수 있습니다.
Reference
이 문제에 관하여(깊이 있는 JS 객체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sjsouvik/js-objects-in-depth-5c5k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)