======Javascript Objects======
* description : Javascript Object Definitions
* author : 오션
* email : shlim@repia.com
* lastupdate : 2021-04-29
\\
=====The source of this article=====
[[https://www.w3schools.com/js/js_object_definition.asp|Javascript Object Definitions]]
\\
%%JavaScript%%에서, 오브젝트(objects, 객체)는 King입니다. 오브젝트를 이해하면, %%JavaScript%%를 이해할 수 있습니다.\\
\\
%%JavaScript%%에서 거의 "모든 것"이 오브젝트입니다.\\
* Booleans는 오브젝트가 될 수 있습니다 (''new'' 키워드로 정의된 경우)
* Numbers는 오브젝트가 될 수 있습니다 (''new'' 키워드로 정의된 경우)
* Strings은 오브젝트가 될 수 있습니다 (''new'' 키워드로 정의된 경우)
* Dates는 항상 오브젝트입니다.
* Maths는 항상 오브젝트입니다.
* Regular Expressions(정규 표현식)는 항상 오브젝트입니다.
* Arrays는 항상 오브젝트입니다.
* Functions는 항상 오브젝트입니다.
* 오브젝트는 항상 오브젝트입니다.
원시 값(primitive values, 프리미티브)을 제외한 모든 %%JavaScript%% 값은 오브젝트입니다.\\
=====JavaScript Primitives=====
**원시 값(primitive value)**은 속성 또는 메서드가 없는 값입니다.\\
\\
**원시 데이터 타입(primitive data type)**은 원시 값이 있는 데이터입니다.\\
\\
%%JavaScript%%는 5 가지 유형의 윈시 데이터 타입을 정의합니다.\\
* ''string''
* ''number''
* ''boolean''
* ''null''
* ''undefined''
원시 값은 변경할 수 없습니다 (하드 코딩되어 변경될 수 없음)\\
\\
%%x = 3.14%%이면 x 값을 변경할 수 있습니다. 그러나 3.14의 값은 변경할 수 없습니다.\\
\\
| value ^ Type ^ Comment ^
| "Hello" | string | "Hello" is always "Hello" |
| 3.14 | number | 3.14 is always 3.14 |
| true | boolean | true is always true |
| false | boolean | false is always false |
| null | null (object) | null is always null |
| undefined | undefined | undefined is always undefined |
\\
=====Objects are Variables=====
%%JavaScript%% 변수는 하나의 값을 포함할 수 있습니다.\\
// Create and display a variable:
let person = "John Doe";
document.getElementById("demo").innerHTML = person;
\\
오브젝트도 변수입니다. 그러나 오브젝트는 많은 값을 포함할 수 있습니다.\\
\\
값은 **name : value** 쌍 (콜론으로 구분된 이름과 값)으로 작성합니다.\\
\\
let person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
document.getElementById("demo").innerHTML = person.firstName + " " + person.lastName; // John Doe
\\
JavaScript 객체는 명명된 값의 모음입니다.
\\
=====Object Properties=====
%%JavaScript%% 오브젝트에서 명명된 값을 **속성(properties)**이라고 합니다.\\
\\
^ Property ^ Value ^
| firstName | John |
| lastName | Doe |
| age | 50 |
| eyeColor | blue |
\\
이름 값 쌍(name value pairs)으로 작성된 오브젝트는 다음과 유사합니다:
* PHP의 연관 배열(Associative arrays)
* Python의 사전(Dictionaries)
* C의 해시 테이블(Hash tables)
* Java의 해시 맵(Hash maps)
* Ruby 및 Perl의 해시(Hashes)
=====Object Methods=====
메서드는 오브젝트에 대해 수행할 수 있는 **작업(actions)**입니다.\\
\\
원시 값, 다른 오브젝트 및 함수는 오브젝트 속성이 될 수 있습니다.\\
\\
**오브젝트 메서드**는 **함수 정의(function definition)**를 포함하는 개체 속성입니다.\\
\\
^ Property ^ Value ^
| firstName | John |
| lastName | Doe |
| age | 50 |
| eyeColor | blue |
| fullName | function() {return this.firstName + " " + thisllastName;} |
\\
%%JavaScript%%는 속성(properties)과 메서드(methods)라고 불리는 명명된 값(named values)의 컨테이너입니다.\\
\\
=====Creating a JavaScript Object=====
%%JavaScript%%를 사용하면 자신 만의 오브젝트를 정의하고 만들 수 있습니다.\\
\\
새로운 오브젝트를 만드는 여러 가지의 방법들이 있습니다.\\
\\
* 오브젝트 리터럴을 사용하여 단일 오브젝트를 정의하고 만듭니다.
* ''new'' 키워드를 사용하여 단일 오브젝트를 정의하고 만듭니다.
* 오브젝트 생성자를 정의한 다음, 생성된 타입의 오브젝트를 만듭니다.
ECMAScript 5에서는 ''Object.create()'' 함수를 사용하여 객체를 만들 수도 있습니다.
=====Using an Object Literal=====
이것은 %%JavaScript%% 오브젝트를 만드는 가장 쉬운 방법입니다.\\
\\
오브젝트 리터럴을 사용하면 하나의 스테이트먼트에서 오브젝트를 정의하고 만들 수 있습니다.\\
\\
오브젝트 리터럴은 중괄호 %%{}%% 안에 있는 이름:값 쌍 (예, age:50)의 목록입니다.\\
\\
다음 예제는 네 가지 속성을 가진 새로운 %%JavaScript%% 오브젝트를 생성합니다.\\
\\
let person = { firstName: "John", lastName: "Doe", age: 50, eyeColor: "blue" };
document.getElementById("demo").innerHTML = person.firstName + " is " + person.age + " years old.";
\\
공백(spaces)과 줄 바꿈(line breaks)은 중요하지 않습니다. 오브젝트 정의는 여러 줄에 걸쳐있을 수 있습니다.\\
\\
let person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
document.getElementById("demo").innerHTML = person.firstName + " is " + person.age + " years old."; // John is 50 years old.
\\
=====Using the JavaScript Keyword new=====
다음의 예제도 4개의 속성(properties)을 가진 새로운 %%JavaScript%% 오브젝트를 생성합니다.\\
\\
let person = new Object();
person.firstName = "John";
person.lastName = "Doe";
person.age = 50;
person.eyeColor = "blue";
document.getElementById("demo").innerHTML = person.firstName + " is " + person.age + " years old."; // John is 50 years old.
\\
위의 두 예제는 정확히 동일합니다. ''new Object()''를 사용할 필요가 없습니다.
단순성(simplicity), 가독성(readability) 및 실행 속도(execution speed)를 위해서는, 첫 번째 방법 (오브젝트트 리터럴 방법)을 사용하십시오.
\\
=====JavaScript Objects are Mutable=====
오브젝트는 변경할 수 있습니다: 오브젝트는 값(value)이 아닌 참조(reference)로 처리됩니다.\\
\\
person이 오브젝트인 경우, 다음의 스테이트먼트는 person의 사본을 생성하지 않습니다.\\
\\
var x = person; // This will not create a copy of person.
\\
오브젝트 x는 person의 복사본이 아닙니다. person입니다. x와 person은 모두 같은 오브젝트입니다.\\
\\
x를 변경하면 person도 변경됩니다. x와 person은 같은 오브젝트이기 때문입니다.\\
\\
let person = { firstName: "John", lastName: "Doe", age: 50, eyeColor: "blue" }
let x = person;
x.age = 10;
document.getElementById("demo").innerHTML = person.firstName + " is " + person.age + " years old."; // John is 10 years old.
console.log(person); // {firstName: "John", lastName: "Doe", age: 10, eyeColor: "blue"}
console.log(x); // {firstName: "John", lastName: "Doe", age: 10, eyeColor: "blue"}
{{tag>오션 Javascript Objects Definitions}}