HomeBlogGuestbookLab 

JDM's Blog

온갖 테스트 결과가 기록되는 이곳은 JDM's Blog입니다. :3

JavaScript Object Properties

이 포스팅의 원본은 이곳입니다. 이 포스팅은 원본 문서를 한글로 번역한 것임을 밝힙니다. 중간중간 의역이 있습니다. 유의 부탁드립니다. :)

JavaScript Properties

속성Properties은 자바스크립트 객체object에서 매우 중요한 부분이다.

속성은 자바스크립트 객체와 관련된 값들이다. 자바스크립트 객체는 정렬 되지 않은 속성들의 집합이기도 하다. 속성은 보통 값을 바꾸거나, 더하거나 삭제할 수 있고 그 중 몇몇은 읽기만 가능read only하다.

Accessing JavaScript Properties

객체의 속성에 접근하기 위한 문법은 다음과 같다.

objectName.property // person.age
objectName["property"] // person["age"]
objectName[expression] // x = "age"; person[x]

표현식expression은 속성 이름이 된다.

person.firstname + " is " + person.age + " years old.";
person["firstname"] + " is " + person["age"] + " years old.";

JavaScript for...in Loop

자바스크립트 for in loop 구문은 객체의 속성을 나열할 수 있다.

/* for in loop 문법 */
for (variable in object) {
    // code to be executed
}

for in loop의 안쪽 코드 블록은 각각의 속성을 위해 한번씩 실행 될 수 있다.

객체의 속성을 나열하는 예제를 보자.

var person = {fname:"DM", lname:"J", age:29}; 

for (x in person) {
    txt += person[x];
}

Adding New Properties

사용자는 이미 존재하고 있는 객체에 간단히 값을 주는 것만으로도 새로운 속성을 추가 할 수 있다.

이미 존재하고 있는 person 객체가 있다고 가정하자. 사용자는 이 객체에 새로운 속성을 줄 수 있다.

person.nationality = "Korea";

사용자는 속성 또는 메소드 이름을 위해 예약된 키워드reserved words를 사용할 수 없다.

Deleting Properties

delete 키워드는 객체로부터 속성을 삭제한다.

var person = {firstName:"DM", lastName:"J", age:29, eyeColor:"black"};
delete person.age; // or delete person["age"]; 

delete 키워드는 속성의 값과 자신의 속성 자체를 삭제한다. 삭제 후에 속성은 다시 추가 되기 전까진 사용할 수 없다. 삭제 연산자delete operator는 객체 속성에서 사용하도록 설계 되었다. 이것은 변수 또는 함수에 영향을 가지지 않는다. 그리고 삭제 연산자는 기본적으로 정의된predefined 자바스크립트 객체 속성에서 사용할 수 없다. 이는 사용자의 애플리케이션을 파괴할 수 있다.

Property Attributes

...Attributes를 어떻게 말해야 할까요. 이미 property가 속성으로 번역된 시점에서 말이죠...ㅠㅠ

모든 속성은 이름을 가진다. 추가적으로 이 속성들은 값을 가질 수 있다. 이 값은 속성의 어트리뷰트 중 하나다. 다른 어트리뷰트는 열거되거나 구성되거나 쓰여질 수 있다. 이 어트리뷰트들은 어떻게 속성을 접근할 수 있는지 정의한다. (읽을 수 있는지? 아니면 쓸 수 있는지?)

자바스크립트에서 모든 어트리뷰트는 읽을 수 있다, 그러나 값은 바뀔 수 있다. (단지 쓰기 가능한 속성에서만)

ECMAScript 5에서 모든 속성 어트리뷰트의 값을 가져오거나 쓰기 위한 메소드들을 가지고 있다.

Prototype Properties

자바스크립트 객체는 그들의 프로토타입의 속성을 상속 받는다.

delete 키워드는 상속 받은 속성들을 삭제하지 않는다. 그러나 만약 사용자가 프로토타입 속성을 삭제한다면 이것은 프로토타입으로부터 상속된 모든 객체들에 영향을 끼칠 것이다.

Closing Remarks

그냥 전부 영글화 하면 어떨까요. 프로퍼티 어트리뷰트, 프로토타입 프로퍼티스... 번역의 의미가 없어지겠네요. 흠 -_- 오늘은 Attribute 때문에 멘탈 붕괴가 일어났네요.