JavaScript

[자바스크립트] #1 공부 기록 - 객체

권군이 2022. 8. 9. 20:55
//1. 리터럴과 프로퍼티

let user = new Object(); //객체 생성자 문법
let user = {}; //객체 리터럴 문법: 중괄호를 이용해 객체를 선언하는 것

let user ={//중괄호 안에는 키:값 쌍으로 구성된 프로퍼티가 들어감
    name: "John",//키(이름,식별자),값
    age: 30,
    "like birds": true, //복수 단어는 따옴표로
};
//프로퍼티 값 얻기
alert(user.name);//John
alert(user.age);//30

//프로퍼티 값에는 모든 자료형 가능
//프로퍼티 추가
user.inAdmin=true;

//프로퍼티 삭제
delete user.age;

//상수 객체 수정
const user = {
    name: "John"
};
//const로 선언된 객체는 수정될 수 있음
user.name ="Pete";
alert(user.name);


//2. 대괄호 표기법

let user ={};

user["likes birds"]=true;
alert(user["likes birds"]);//true
delete user(["likes birds"]);

//대괄호 표기법을 사용하면 변수를 키로 사용하거나 모든 표현식을 사용할 수 있음
let key ="like birds";
user[key]=true;

//사용자 입력값에 따라 ..
let user = {
    name:"John",
    age:30
};
let key = prompt("사용자의 어떤 정보를 얻고 싶으신가요?","name");
alert(user[key]);//user.key는 불가

//계산된 프로퍼티: 프로퍼티 키가 대괄호로 둘러싸여 있는 경우
let fruit = prompt("어떤 과일을 구매하시겠습니까?","apple");
let bag={
    [fruit]:5,//변수 fruit에서 프로퍼티 이름을 동적으로 받아옴
};
alert(bag.apple);

//다른 방식
let fruit = prompt("어떤 과일을 구매하시겠습니까?","apple");
let bag ={};
bag[fruit]=5;

let fruit = 'apple';
let bag ={
    [fruit + 'Computers']:5;//bag.appleComputers =5
}

//3.단축 프로퍼티

function makeUser(name, age){
    return{//프로퍼티의 키와 값이 변수와 동일->단축구문
        name:name,
        age:age,
    };
}
let user = makeUser("John",30);
alert(user.name);

//단축구문 - name:name 대신 name만 (섞어 쓰는 것도 가능)
function makeUser(name,age){
    return{
        name, 
        age,
    };
}

//4.프로퍼티 이름의 제약사항

let obj = {//예약어를 키로 사용해도 됨
    for:1,
    let:2,
    return:3
};
alert(obj.for+obj.let+obj.return);//6

//__proto__제약
let obj = {};
obj.__proto__=5;
alert(obj.__proto__);//5할당 무시 

//in 연산자로 프로퍼티 존재 여부 확인하기

"key" in Object

let user = {name:"John",age:30};
alert("age" in user);//true
alert("lala" in user);//false

//변수에 저장 된 값으로 프로퍼티 존재 확인
let user = {age:30};
let key = "age";
alert(key in user);

//undefinded - 프로퍼티 존재 여부 확인
let user = {};
alert(user.noSuchProperty===undefined);

//왜 in 을 쓰나?
//프로퍼티가 존재하는 데 값이 undefined 인 예시
let obj = {
    test:undefined
};
alert(obj.test);

//5. for in 반복문

for (key in object){
    // 모든 프로퍼티 키를 순회
}

let user ={name:"jjoh",age:30,isAdmin:true};
for(let key in user){
    alert(key);//키
    alert(user[key]);//키에 해당하는 값
}

//객체 정렬방식
//정수 프로퍼티는 자동으로 결정, 그외의 프로퍼티는 객체에 추가한 순서대로 정렬
let codes ={
    "49":"독일",
    "41":"스위스",
    "44":"영국",
    "1":"미국",
};
for(let code in codes){
    alert(code);//1,41,44,49
}

//과제

//1
let user={
    name:"John",
    surname:"Smith",
};
user.name="Pete";
delete user.name;
for(let key in user){
    alert(user[key]);
}

//2.
let schedule = {};
function isEmpty(obj){
    for(let key in obj){
        return false;
    }
    return true;
}
alert(isEmpty(schedule));
schedule["8:30"]="get up";
alert(isEmpty(schedule));

//3
let salaries ={
    John:100,
    Ann:160,
    Pete:130
};

let sum = salaries.John+salaries.Ann+salaries.Pete;
alert(sum);

let sum =0;
        for(let key in salaries){
            sum+=salaries[key];
        }
        alert(sum);
//4
let menu = {
    width:200,
    height:300,
    title:"My menu"
};

function multi(obj){
    for(let key in obj){
        if(typeof obj[key]=="number"){
            obj[key]+=obj[key];
        }
    }
}
multi(menu);
alert(menu.title);

 

참고) https://ko.javascript.info/