사물

객체는 각각이 프리미티브는 데이터 유형으로서, 한 가지 중요한 차이: 프리미티브와 달리 객체는 변경 가능합니다. 객체에는 데이터가 식별자와 연결되어 있지만 object 데이터는 유지됩니다. 유형에 상관없이 유형을 선택할 수 있습니다

프리미티브를 제외하고 모든 JavaScript 값은 객체입니다. 원시 리터럴은 객체와 유사한 동작을 프로토타입 상속을 JavaScript가 사실상 객체로 구성되어 있다고 자주 합니다.

객체 리터럴은 0개 이상의 키-값을 둘러싼 중괄호 쌍입니다. '속성'이라고 하는 쌍으로 구성되며 모든 자바스크립트 값을 포함할 수 있습니다.

{
   
"myProperty" : true
}

속성 는 모든 기호 또는 문자열. 식별자를 할당할 때처럼 변수에 추가하는 경우 속성 키로 사용되는 문자열은 예측 가능해야 하며 설명:

let carAttributes = {
   
"color" : "red"
};

carAttributes
> Object { color: "red" }

속성 키에는 단일 (') 또는 큰따옴표 (")의 문자열 리터럴이 필요합니다. 템플릿 리터럴:

let carAttributes = {
   
`keyString` : false
};
> Uncaught SyntaxError: expected property name, got template literal

속성 값은 모든 데이터 유형이 될 수 있습니다. 객체의 속성은 는 자체 속성을 가진 객체를 포함합니다.

let myObject = {
   
'key' : {
       
'subkey' : true,
       
'othersubkey' : false
   
}
};

myObject
;
> Object { key: Object { subkey: true, othersubkey: false } }

속성 값이 함수인 경우 이 속성을 '메서드'라고 합니다.

const myObject = {
   
"myProperty" : true,
    myMethod
() {
        console
.log( "This is a method." );
   
}
}

myObject
.myProperty;
> true

myObject
.myMethod();
> "This is a method."

new 키워드를 사용하여 객체를 만들 수도 있습니다.

let myObject = new Object();

이전 예에서는 새로 생성된 객체 리터럴이 할 수 있습니다. 필수는 아닙니다. 다른 데이터 유형과 마찬가지로 객체가 예상되는 모든 곳에서 식별자가 없는 객체입니다. 하지만 혼동될 수 있는 모든 컨텍스트에서는 객체 리터럴에 괄호가 필요합니다. 두 개의 중괄호 문법 ({})을 공유하는 경우 블록 문 변수를 초기화하는 데는 이 과정이 필요하지 않습니다.

{ "value" : 2 }
> Uncaught SyntaxError: unexpected token: ':'

({ "value" : 2 })
> Object { value: 2 }

let valObj
= { "value" : 2 };

valObj
;
> Object { value: 2 }

프리미티브와 달리 피처스토어의 생성 결과에 의미 있는 차이가 new Object()를 사용하여 객체를 만들고 객체 리터럴을 만들어야 합니다. 왜냐하면 두 경우 모두 Object 프로토타입. 그러나 둘 사이에는 한 가지 실질적인 차이가 있습니다. 구문입니다.

new 키워드는 나중에 데이터로 채워지는 빈 객체를 정의해야 합니다.

let myObject = new Object();

myObject
.booleanValue = true;
myObject
.stringValue = "My string.";

객체 리터럴은 생성 시 데이터로 채워질 수 있습니다.

let myObject = {
   
'booleanValue' : true,
   
'stringValue' : "My string."
};

실용적으로 거의 사용되지 않지만 new Object()를 사용하여 프리미티브를 전환할 수 있습니다. 데이터 값을 각 유형의 객체로 변환합니다. 생성자new 키워드 함수를 사용하세요. 예를 들어 다음은 기능적으로 다음과 동일합니다. new Number( 10 ):

let myObject = new Object( 10 );

myObject
;
> Number { 10 }

nullundefined 값은 기능적으로 동일한 빈 객체를 생성함 인수를 제공하지 않고 new Object()를 호출할 수 있습니다.

객체 리터럴을 new Object()에 인수로 전달하면 객체가 전달됨 문자 그대로의 이름을 바꾸지 않아도 됩니다.

let myObject = new Object( { myValue : 10 } );

myObject
;
> Object { myValue: 10 }

원시 값에 생성자를 사용하는 것과 마찬가지로 객체에 생성자를 사용하면 객체 리터럴 표기법을 사용하는 것보다 이점이 거의 없습니다. 콘텐츠를 만들 때 빈 객체가 나중에 값으로 채워지므로 개발자는 객체를 선호하는 경향이 있습니다 리터럴 표기법을 사용합니다.

이해도 확인

객체의 속성을 설정하는 데 사용할 수 있는 표기법은 무엇인가요?

괄호 표기법
마침표 표기법
선 표기법
점 표기법

다음 중 값을 가져오기 위한 올바른 문법은 무엇인가요? /myProp

myObj["myProp"];
myObj("myProp");
myObj{"myProp"};