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.

브라우저 호환성

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
observe
DeprecatedNon-standard
Chrome No support 36 — 52Edge No support NoFirefox No support NoIE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android No support NoOpera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No

Legend

No support  
No support
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.

같이 보기