let user = new Object();
let user = {};
let user = {
name : "JSON.test",
age: 30
};
//프로퍼티 값 얻기
console.log(user.name); //JSON.tes
console.log(user.age); // 30
user.isAdmin = true;
delete user.age;
let user = {
name : "JSON.test",
age: 30,
"likes birds": true //복수 단어 따옴표로
};
※ const로 선언된 객체는 수정 가능
const user = {
name: "John"
};
user.name = "Pete"; // (*)
console.log(user.name);
let user = {};
//set
user["likes birds"] = true;
//get
alert(user["likes birds"]);
//delete
delete user["likes birds"];
//문자열
let key = "likes birds";
// user["likes birds"] = true; 와 같습니다.
user[key] = true;
let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");
let bag = {
[fruit]: 5, // 변수 fruit에서 프로퍼티 이름을 동적으로 받아 옵니다.
};
alert( bag.apple ); // fruit에 "apple"이 할당되었다면, 5가 출력됩니다.
let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");
let bag = {};
// 변수 fruit을 사용해 프로퍼티 이름을 만들었습니다.
bag[fruit] = 5;
↑ 둘 다 사용 가능
function makeUser(name, age){
return {
name: name,
age: age
};
}
let user_prop = makeUser("jimin", 28);
console.log(user_prop);
console.log(user_prop.name);
console.log(user_prop.age);
//프로퍼티 값 단축 구문 사용
function makeUser(name, age){
return {
name,
age
};
}
letuser_prop= makeUser("jimin", 28);
console.log(user_prop);
console.log(user_prop.name);
console.log(user_prop.age);
↑ 동일 값 출력
let user = {
name, // name: name 과 같음
age: 30
};
let obj ={
for : 1,
let : 2,
return : 3
};
console.log(obj.for+obj.let+obj.return);
let oobj ={
0: "test"
};
// 동일
console.log(oobj[0]);
console.log(oobj["0"]);
let obj1 = {};
obj1.__proto__ = 5;
console.log(obj1.__proto__); //[Object: null prototype] {}
undefined
반환한다는 것 → 프로퍼티 존재 여부 쉽게 확인let user = {}
console.log(user.noSuchProperty === undefined); //true
undefined
와 비교하는 것 이외에도 연산자 in
을 사용하면 프로퍼티 존재 여부를 확인"key" in object
let user = { name: "John", age: 30 };
console.log("age" in user); //true
console.log("balbal" in user); //false
for (key in object) {
// 각 프로퍼티 키(key)를 이용하여 본문(body)을 실행합니다.
}
let for_user = {
name: 'john',
age: 30,
isAdmin: true
};
for (let key in user){
console.log(key); //name | age
console.log(for_user[key]); // john | 30
}
let codes = {
"49": "독일",
"41": "스위스",
"44": "영국",
// ..,
"1": "미국"
};
for (let code in codes) {
console.log(code); // 1, 41, 44, 49
}
나라 번호가 정수 취급 되지 않도록 각 나라 앞에 + 붙이기
let codes = {
"+49": "독일",
"+41": "스위스",
"+44": "영국",
// ..,
"+1": "미국"
};
for (let code in codes) {
console.log( +code ); // 1, 41, 44, 49
}
let etc_user = {
name : 'JoHn',
surname: 'smith',
other_name: '알아서 뭐하게'
};
for (let prop in etc_user){
console.log(prop) // name, surname, other_name
}
객체는 몇 가지 특수한 기능을 가진 연관 배열(associative array)입니다.
객체는 프로퍼티(키-값 쌍)를 저장합니다.
아래와 같은 방법을 사용하면 프로퍼티에 접근할 수 있습니다.
obj.property
obj["property"]
. 대괄호 표기법을 사용하면 obj[varWithKey]
같이 변수에서 키를 가져올 수 있습니다.객체엔 다음과 같은 추가 연산자를 사용할 수 있습니다.
delete obj.prop
"key" in obj
for (let key in obj)
지금까진 '순수 객체(plain object)'라 불리는 일반 객체
에 대해 학습했습니다.
자바스크립트에는 일반 객체 이외에도 다양한 종류의 객체가 있습니다.
let user = {
name : 'John',
surname: 'Smith'
};
user.name = 'Pete';
delete user.name;
console.log(user);
function isEmpty(obj){
if(!isEmpty()){
return true;
}else{
return false;
}
}
let schedule ={};
console.log(isEmpty(schedule))
// Maximum call stack size exceeded 발생 -> 함수들이 서로가 서로를 호출해서 call stack 터짐
function isEmpty(obj){
for (let key in obj){
return false;
}
return true;
}
let schedule ={};
console.log(isEmpty(schedule)) // true
에러 없이 실행!
-> const의 객체값은 변화 가능!
let salaries ={
John : 100,
Ann: 160,
Pete : 130
}
let sum = (salaries.John + salaries.Ann + salaries.Pete);
console.log(sum);
let salaries ={
John : 100,
Ann: 160,
Pete : 130
}
let sum = 0;
for(let key in salaries){
sum += salaries[key];
}
console.log(sum);
let menu ={
width:200,
height: 300,
title : "My menu"
};
function multiplyNumeric(obj){
for( let key in obj){
if(typeof obj[key] == "number"){
obj[key] *= 2
}
}
}
console.log(multiplyNumeric(menu)); //undefined가 나온다....
let menu ={
width:200,
height: 300,
title : "My menu"
};
function multiplyNumeric(obj) {
for (let key in obj) {
if (typeof obj[key] == 'number') {
obj[key] *= 2;
}
}
return obj;
}
console.log(multiplyNumeric(menu));