객체는 각각이
프리미티브는 데이터 유형으로서, 한 가지 중요한
차이: 프리미티브와 달리 객체는 변경 가능합니다. 객체에는 데이터가
식별자와 연결되어 있지만 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 }
null
및 undefined
값은 기능적으로 동일한 빈 객체를 생성함
인수를 제공하지 않고 new Object()
를 호출할 수 있습니다.
객체 리터럴을 new Object()
에 인수로 전달하면 객체가 전달됨
문자 그대로의 이름을 바꾸지 않아도 됩니다.
let myObject = new Object( { myValue : 10 } );
myObject;
> Object { myValue: 10 }
원시 값에 생성자를 사용하는 것과 마찬가지로 객체에 생성자를 사용하면 객체 리터럴 표기법을 사용하는 것보다 이점이 거의 없습니다. 콘텐츠를 만들 때 빈 객체가 나중에 값으로 채워지므로 개발자는 객체를 선호하는 경향이 있습니다 리터럴 표기법을 사용합니다.
이해도 확인
객체의 속성을 설정하는 데 사용할 수 있는 표기법은 무엇인가요?
다음 중 값을 가져오기 위한 올바른 문법은 무엇인가요?
/myProp
myObj["myProp"];
myObj("myProp");
myObj{"myProp"};