자바스크립트 객체 생성자

Example

My father is 50.


객체 Types (계획) (Classes)

이전 장의 예제는 제한적입니다. 단일 객체만 생성합니다.

때로는 같은 “type”의 많은 객체를 생성하기 위한 “계획(blueprint)”이 필요합니다.

객체 생성자 함수(object constructor function)를 사용하여, “object type”을 생성합니다.

위의 예에서 function Person()은 객체 생성자 함수입니다.

new 키워드와 함께 생성자 함수를 호출하여, 같은 type의 객체를 만듭니다:

My father is 50. My mother is 48.


The this 키워드

자바 스크립트에서 this는 코드가 “속해있는(owns)” 객체(object)입니다.

this는, 객체에 사용될 때, 객체 자체입니다.

생성자 함수에서 this 값이 없습니다. 이것은 new 객체를 위한 대리자(substitute)입니다. this의 값은, 새로운 객체가 생성될 때 , 이 새로운 객체가 값이 됩이다.


객체에 속성(Property) 추가

기존 객체에 새 속성(property)을 추가하기는 쉽습니다:

Example

My father is English

myFather에 속성이 추가됩니다. myMother에 추가되지 않습니다 (다른 person 객체에는 추가되지 않습니다).


객체에 메소드(Method) 추가

기존 객체에 메소드를 추가하기가 쉽습니다:

Example

My father is John Doe

myFather에 메소드가 추가됩니다. myMother에 추가되지 않습니다 (다른 person 객체에는 추가되지 않습니다).


생성자(Constructor)에 속성 추가

기존 객체에 새 속성을 추가하는 것과 같은 방법으로, 객체 생성자에 새 속성을 추가 할 수 없습니다:

Example

생성자(constructor)에 새 속성을 추가할 수 없습니다.

The nationality of my father is undefined

생성자(constructor)에 새 속성을 추가하려면, 생성자 함수(constructor function)에 추가해야합니다:

Example

My father is English. My mother is English

이 방법으로 객체 속성(object properties)은 기본값(default values)을 가질 수 있습니다.


생성자(Constructor)에 메소드(Method ) 추가

생성자 함수(constructor function)는 메소드(methods)를 정의할 수도 있습니다:

Example

My father is John Doe

기존 객체에 새 메소드를 추가할 때와 같은 방식으로, 객체 생성자(object constructor)에 새 메소드(method)를 추가할 수 없습니다.

생성자 함수(constructor function) 내에서, 객체에 메소드를 추가하는 작업을 해야 합니다:

Example

changeName() 함수는 person의 lastName 속성에 name의 값을 할당합니다.

Now You Can Try:

My mother’s last name is Doe

자바스크립트는 thismyMother로 “대체(substituting)”함으로써, 어느 person을 말하는지 압니다.


내장(Built-in) 자바스크립트 생성자(Constructors)

자바스크립트에는 기본 객체(native objects)에 대한 내장 생성자(built-in constructors)가 있습니다:

Example

Math() 객체는 위 목록에 없습니다. Math는 전역 객체(global object)입니다. Math에는 new 키워드를 사용할 수 없습니다.


알고 계십니까?

위에서 살펴보았듯이, 자바스크립트에는 primitive 데이터 types (String, Number 및 Boolean)의 객체(object) 버전이 있습니다. 복잡하게 객체를 생성할 이유가 없습니다. Primitive values가 훨씬 빠릅니다.

그밖에:

new Object() 대신 object literals { }을 사용하십시오.

new String() 대신 string literals ” “를 사용하십시오.

new Number() 대신 number literals을 사용하십시오.

new Boolean() 대신 boolean literals을 사용하십시오.

new Array() 대신 array literals [ ]를 사용하십시오.

new RexExp() 대신 pattern literals을 사용하십시오.

new Function() 대신 함수 표현식(function epressions) ( ) { }을 사용하십시오 .

Example

x1: object
x2: string
x3: number
x4: boolean
x5: object
x6: object
x7: function


String 객체

일반적으로 문자열(strings)은 primitives로 생성됩니다: var firstName = “John”

그러나 문자열(strings)은 new 키워드를 사용하여 객체(objects)로 생성될 수도 있습니다: var firstName = new String(“John”)

왜 strings을 객체로 생성해서는 안되는지, JS Strings를 참조하십시오.


Number 객체

일반적으로 숫자(numbers)는 primitives로 생성됩니다: var x = 123

그러나 숫자(numbers)는 new 키워드를 사용하여 객체(objects)로 생성될 수도 있습니다: var x = new Number(123)

왜 numbers을 객체로 생성해서는 안되는지, JS Numbers를 참조하십시오.


Boolean 객체

일반적으로 booleans은 primitives로 생성됩니다: var x = false

booleans은 new 키워드를 사용하여 객체(objects)로 생성될 수도 있습니다: var x = new Boolean(false)

왜 booleans을 객체로 생성해서는 안되는지, JS Booleans를 참조하십시오.

출처: JavaScript Object Constructors

답글 남기기