웹 개발

ECMAScript 5 객체 속성 추가

노루아부지 2019. 8. 17. 00:08

ECMAScript 5 객체 속성 추가

 - HTML5와 함께 출현한 javascript 표준안을 ECMAScript 5라고 부른다.

 - ECMAScript 5는 IE 8 이하에서는 지원하지 않는다.

 

메서드 이름                                        설명

Object.defineProperty()                         객체에 속성을 추가

Object.defineProperties()                       객체에 속성을 추가

 

1. defineProperty(속성을 추가하려는 객체, 속성의 이름, 속성과 관련된 옵션 객체)

var aaa = {};
Object.defineProperty(aaa, 'name', {
});

 

1.1 객체 속성 관련 옵션

옵션이름                            설명

value                                속성의 값을 의미

writeable                           객체의 속성 값을 변경 할 수 있는지를 의미

get                                   getter

set                                   setter

configurable                       속성의 설정을 변경 할 수 있는지를 의미

enumerable                        for in 반복문으로 검사할 수 있는지를 의미

 

옵션을 입력하지 않으면 false 또는 undefined가 입력된다.

 

1.1.1 writeable, enumerable

var aaa = {};
Object.defineProperty(aaa, 'name', {
	value: 'masami',
	writeable: false,
	enumerable: false
});

// code 1
aaa.name = "OTHER";

// code 2
for(var i in aaa) {
	alert(i + " : " + aaa[i]);
}

// code 3
alert(aaa.name);

 

위의 코드를 실행하면 'masami'라는 메시지( code 3에 해당 )만 출력되는 것을 볼 수 있다.

code 1에 의해서 name속성이 'OTHER'로 바뀌어야 하지만 writeable: false 로 인해 변경이 되지 않았다.

또한, enumerable: false에 의해서 code 2도 실행되지 않는다.

 

1.1.2 get, set

var aaa = {};
var value = 'masami';
Object.defineProperty(aaa, 'name', {
	get: function() {
		alert('getter');
		return value;
	},
	set: function(v) {
		alert('setter : ' + value);
		value = v;
	}
});

aaa.name = 'okui';
alert(aaa.name);

위의 코드를 실행하면 1) setter : masami 2) getter 3) okui 와 같은 순서로 출력한다. 이를 통해 객체를 사용할 때 자동으로 getter와 setter를 사용한다는 점을 알 수 있다.

 

1.1.3 configurable

var aaa = {};
var value = 'masami';
Object.defineProperty(aaa, 'name', {
	get: function() { return value; },
	set: function(v) { value = v; }
	configurable: true
});

Object.defineProperty(object, 'name', {
	enumerble: true;
});

 

위의 코드를 configurable: false로 하고 실행하면 error 발생

 

2. Object.defineProperties(속성을 추가하려는 객체, 속성의, 속성과 관련된 옵션 객체)

 

var aaa = {};
Object.defineProperties(aaa, {
	name: {
		value: 'masami';
	},
	gender: {
		value: 'female';
	}
});

defineProperties() method는 한꺼번에 여러 개의 속성을 지정할 수 있다.

728x90

'웹 개발' 카테고리의 다른 글

IE 8이하 차단  (0) 2019.08.17
javascript 상속  (0) 2019.08.17
ECMAScript 5 객체 생성  (0) 2019.08.17
html/css - table 구조에서 열(column)단위로 숨기기  (2) 2019.08.17
jquery ui class  (0) 2019.08.16
loading