코딩물고기

[J] JavaScript & jQuery 공부하기 #13 본문

코딩물고기의 IT월드

[J] JavaScript & jQuery 공부하기 #13

코딩하는물고기 2019. 4. 3. 14:01
728x90

경기도 일자리 재단에서 수업을 배웠고 자료를 참고하여 공부를 해보았다.

 

16. 객체 사용

- 객체에 속성 추가
* Object.defineProperty()
- 객체에 속성 하나를 추가함
< script type="text/javascript">
Object.defineProperty(dog,'country',{});
</ script>
> {}에는 추가하는 속성의 옵션 값이 지정된다.

value : 추가하는 속성의 값
writable : 속성값 변경 가능 여부
get : getter 정의
set : setter 정의
configurable : 설정 변경 가능 여부
enumerable : for ~ in 문장 사용 가능 여부

Object.define.Properties()
- 객체에 여러 개의 속성을 추가함
< script type="text/javascript">
Object.defineProperties(dog,{
country : {},
price : {}
})
</ script>
> {}에는 추가하는 속성의 옵션 값이 지정됨

- 속성 검색
Object.keys()
  - 해당 객체의 열거 가능한 속성의 키 값들을 배열로 반환
  < script type="text/javascript">
   var keys = Object.keys(dog);
  </ script>
* Object.getOwnPropertyNames()
- 해당 객체의 속성 이름들을 열거 가능 여부에 무관하게 모두 반환
< script type="text/javascript">
var names = Object.getOwnPropertyNames(dog);
</ script>

- 속성의 추가 및 삭제 제한
* Object.preventExtensions()
- 해당 객체에 동적으로 속성을 추가하는 것을 제한함
- 에러는 발생하지 않지만 속성이 추가되지 않음
< script type="text/javascript">
Object.preventExtensions(dog);
</ script>

  * Object.seal()
   - 해당 객체의 속성을 삭제하는 것을 제한
   - 에러는 발생하지 않지만 속성이 제거되지 않음
   < script type="text/javascript">
   Object.seal(dog);
   </ script>

 * push()
   - 배열 객체에 요소를 추가하는 메소드
   < script type="text/javascript">
       var dogs = [];
        dogs.push({"푸들", 10, "푸돌이"})
        dogs.push({"불독", 12, "도기"})
        dogs.push({"푸들", 10, "푸돌이"})
        dogs.push({"시바견", 16, "시바"})
   </ script>

* 예제
< script type="text/javascript">
var car1 = {name : "소나타", company : "현대", year : 2017}
var car2 = {name : "SM5", company : "르노삼성", year : 2017};
var car3 = {name : "그랜저", company : "현대", year : 2017};

Object.defineProperty(car1, "price",{
value : 2600,
enumerable : true,
writable : false
});
Object.defineProperty(car2, "price",{
value : 2700,
enumerable : true,
writable : false
});
Object.defineProperty(car3, "price",{
value : 3000,
enumerable : true,
writable : false
});

car1.toString = function(){
return "name = " + this.name + ", company = " + this.company + ", year = " + this.year + ",price = " + this.price;
}
car2.toString = function(){
return "name = " + this.name + ", company = " + this.company + ", year = " + this.year + ",price = " + this.price;
}
car3.toString = function(){
return "name = " + this.name + ", company = " + this.company + ", year = " + this.year + ",price = " + this.price;
}

var cars = [];
cars.push(car1);
cars.push(car2);
cars.push(car3);

for(var index in cars){
document.write(cars[index].toString() + "
");
}

var total = 0;
for(var index in cars){
total += cars[index].price;
}
document.write("자동차 가격  평균 = " + Math.round(total/3) + "만원" )
</ script>

728x90
Comments