JS중급_for in/for of, enumerable, iterable

▶️ for in 반복문

var newObject = {name : "Kim", age : 30};

for (var key in new Object) {
	console.log(newObject[key]);
}
/* 
kim
30
*/
  • for in 반복문은 Object에 저장된 자료들을 하나씩 꺼내고 싶을 때 사용한다.
  • 위 예시처럼 사용하면 반복시 변경되는 key 값을 출력가능하다. (key라고 안쓰고 다른 변수명으로 사용 가능)
  • key는 단순 변수명으로 newObject.key이런식으로 쓰지 않는다.

▶️ for in 반복문의 특징 1.enumerable

var newObject = {name : "Kim", age : 30};

console.log(Object.getOwnPropertyDescriptor(newObject, 'name'));
}
// 콘솔창 출력결과 : 
// {value : "Kim", writable: true, enumerable: true, configurable: true}

  • getOwnPropertyDescriptor는 프로퍼티의 속성을 출력해주는데, 결과값은 위와 같다.
  • for in 반복문을 사용하려면 이 중 enumerable라는 속성이 true여야한다. (enumerable : 셀 수 있는)

▶️ for in 반복문의 특징 1.enumerable

var newObject = {name : "Kim", age : 30};

console.log(Object.getOwnPropertyDescriptor(newObject, 'name'));
}
// 콘솔창 출력결과 : 
// {value : "Kim", writable: true, enumerable: true, configurable: true}

  • getOwnPropertyDescriptor는 프로퍼티의 속성을 출력해주는데, 결과값은 위와 같다.
  • for in 반복문을 사용하려면 이 중 enumerable라는 속성이 true여야한다. (enumerable : 셀 수 있는)

▶️ for in 반복문의 특징 2.부모 prototype


  class mother {

  }
  mother.prototype.name = "park";

  var newObject = new mother();

  for (var key in newObject ){
      console.log(newObject[key])
  };

// park

for in의 문제는 부모가 가지고 있는 자료까지 출력한다는 것이다. 이를 방지하기 위해선 if문을 따로 추가해준다.


  class mother {

  }
  mother.prototype.name = "park";

  var newObject = new mother();

  for (var key in newObject ){
      if(newObject.hasOwnProperty(key)){
      console.log(newObject[key])};
  };

// park
  • hasOwnProperty()라는 함수는 오브젝트가 이 key값을 직접가지고 있냐를 물어보는 함수이다. 가지고 있다면 true, 없으면 false를 뱉어낸다.
  • 오브젝트가 직접 가지고 있는 key값만 출력하고 싶을때 사용한다.

▶️ for of 반복문

  var arr = [1,2,3,4,5];
  for (var data of arr) {
      console.log(data);
  };

  console.log( arr[Symbol.iterator]()); //Object [Array Iterator] {}


  • for of 반복문을 사용하면 배열안에 있는 모든 자료를 하나씩 콘솔창에 출력이 가능하다.
  • array, 문자, arguments, NodeList, Map, Set 자료형에 적용할 수 있다.
  • 더 정확히말하면 iterable인 자료형에만 사용이 가능한데, Symbol.iterator라는 일종의 메서드를 가지고 있는 자료형들을 뜻한다.

좋은 웹페이지 즐겨찾기