//  여러가지 ES6 문법 소개 (2)
//
//
//  1. 단축 속성명(property shorthand)
//
//  => 객체의 각 요소의 속성명을 해당 변수의 이름으로 단축시켜 표현하는 방법.
//
const Player_Name = "신형만";
const Player_Age = 35;

const obj_01 = {
    Player_Name: Player_Name,
    Player_Age: Player_Age,
}

console.log("객체 1번 : ", obj_01)

const obj_02 = {
    Player_Name,
    Player_Age,
}

console. log("객체 2번 : ", obj_02)

console.log("------------------------------------------");
//
//
//  2. 전개구문(Spread Operator)
//
//  => 현재 객체의 내용을 객체에서 모두 꺼내어 표시하는 문법.
//
//  => destructuring 과 함께 가장 많이 사용되는 ES6 문법 중 하나이다.
//
//  => " ... 오브젝트 이름 " 의 형태를 지닌다.
//
let number = [1, 2, 3, 4, 5];

console.log(number);        // 일반 표현방식

console.log(...number);     // 전개구문 표현방식

console.log("------------------------------------------");

let new_number = [...number, 4, 5, 6, 7, 8, 9, 10];

console.log(new_number);

console.log("------------------------------------------");

let knight_01 = {
    job: "기사",
    level: 15,
    title: "황혼의 그림자",
    skill: "그림자 베기",
}

let knight_02 = {...knight_01};

console.log(knight_01);
console.log(knight_02);

console.log("------------------------------------------");
//
//
//  3. 나머지 매개변수(Rest Parameter) : "...args" 의 형태
//
//  => 정의되지 않은 나머지의 매개변수들을 표시하는 문법.
//
function Sample_Func(num_01, num_02, num_03, ...args) {

    console.log(num_01, num_02, num_03);
    console.log(...args);

}

Sample_Func(10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
//
//
//  4. 템플릿 리터럴(Template Literal) : ` ~ 표현문 `
//
//  => 일반적으로 문자열을 포함하여 JAVA Script 연산까지 모두 포함하여 출력하는 문법.
//
//  => 만일 JAVA Script 연산을 포함하고 싶다면 ${....} 에서 "...." 부분에 연산식을 적으면 된다.
//
let Tree_Name = "느티나무"
let JAVA_Script_Sentences = `이 ${Tree_Name}의 수명은 ${35 + 25} 살 입니다.`;
let Introductuion = `
    Hello

        Nice to meet you~!!!!

            My name is JAVA Script~!!!!

                Welcome to the Programming World~!!!!
`

console.log(JAVA_Script_Sentences);

console.log(Introductuion);

console.log("------------------------------------------");