MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Array.observe()

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

안씀
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

Array.observe() 메서드는 Object.observe()가 객체를 관찰하는 것과 비슷하게 , 배열의 변화를 비동기 적으로 관찰 하는데 사용 되었습니다. 그것은 발생 순서에 따른 변화의 흐름을 제공합니다. Object.observe()가 accept type list ["add", "update", "delete", "splice"]와 함께 호출되는 것과 같습니다. 하지만 이 API는 더이상 사용되지 않고 브라우저에서 제거 되었습니다. 대신, 더 일반적인 Proxy 객체를 사용하세요.

문법

Array.observe(arr, callback)

파라미터

arr
관찰 할 배열
callback
이 함수는 변화가 일어날때 마다 다음과 같은 인수와 함께 호출됩니다.
changes
변경을 나타내는 각 객체들의 배열입니다. 이 변경 객체들의 프로퍼티 들은:
  • name: 변경된 프로퍼티의 이름
  • object: 변경 후 배열
  • type: 변경 타입을 나타내는 문자. "add", "update", "delete", 또는 "splice" 중 하나.
  • oldValue: "update" 나 "delete"유형에만 해당합니다. 변경 전 값.
  • index: "splice"유형에만 해당합니다. 변경이 발생한 인덱스.
  • removed: "splice"유형에만 해당합니다. 삭제 된 요소들의 배열.
  • addedCount: "splice"유형에만 해당합니다. 추가 된 요소들의 숫자.

설명

 

콜백 함수는 arr이 변경 될 때마다 호출되며 발생하는 순서대로 모든 변경 사항의 배열로 호출됩니다

Array.prototype.pop() "splice" 변경으로 보고되는 것처럼, 변경은 배열 메서드를 통해 일어납니다. 배열 길이를 변경하지 않는 인덱스 할당 변경은 "update" 변경으로 보고 될 수 있습니다.

예제

다른 변경 유형 로깅(Logging)

var arr = ['a', 'b', 'c'];

Array.observe(arr, function(changes) {
  console.log(changes);
});

arr[1] = 'B';
// [{type: 'update', object: <arr>, name: '1', oldValue: 'b'}]

arr[3] = 'd';
// [{type: 'splice', object: <arr>, index: 3, removed: [], addedCount: 1}]

arr.splice(1, 2, 'beta', 'gamma', 'delta');
// [{type: 'splice', object: <arr>, index: 1, removed: ['B', 'c'], addedCount: 3}]

명세

Strawman proposal specification.

브라우저 호환성

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 36 [1] No support No support No support No support
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support No support (Yes) No support No support No support No support

[1] Chrome 49에서 사용되지 않으며 Chrome 50에서 플래그 오프 되었고 Chrome 52에서 완전히 제거되었습니다.

함께 보기

문서 태그 및 공헌자

 이 페이지의 공헌자: reoim
 최종 변경: reoim,