Object.prototype.__lookupSetter__()

지원이 중단되었습니다: 이 기능은 더 이상 권장되지 않습니다. 일부 브라우저에서는 아직 지원할 수 있지만 관련 웹 표준에서 이미 제거되었거나 제거 과정에 있는 경우가 있으며, 호환성을 위해 유지되고 있을 수 있습니다. 사용을 피하고 가능하다면 기존 코드를 업데이트하세요. 결정을 지원할 하단의 호환성 표를 확인하세요. 이 기능은 언제든지 작동을 중단할 수 있음을 유의하세요.

참고 : 이 기능은 Object.getOwnPropertyDescriptor() API 사용을 선호하기 때문에 더 이상 사용되지 않습니다. 이 메서드의 동작은 웹 호환성을 위해서만 명시되며 모든 플랫폼에서 구현할 필요는 없습니다. 모든 곳에서 작동하지 않을 수도 있습니다.

Object 인스턴스의 __lookupSetter__() 메서드는 지정된 속성에 설정자로 바인딩된 함수를 반환합니다.

구문

js
__lookupSetter__(prop)

매개변수

prop

반환되어야 할 설정자 속성의 이름이 포함된 문자열.

반환 값

지정된 속성에 설정자로 바인딩된 함수를 반환합니다. 해당 속성을 찾을 수 없거나 해당 속성이 데이터 속성이면 undefined를 반환합니다.

설명

Object.prototype을 상속받는 모든 객체들(즉, null-프로토타입 객체를 제외한 모든 객체)은 __lookupSetter__() 메서드를 상속받습니다. 객체의 속성에 대해 설정자가 정의되어 있다면, 해당 속성을 통해 설정자 함수를 직접 참조하는 것은 불가능합니다. 왜냐하면 그 속성은 값이 설정될 때만 함수를 호출하기 때문입니다. __lookupSetter__()는 설정자 함수에 대한 참조를 얻는 데 사용될 수 있습니다.

__lookupSetter__() 메서드는 프로토타입 체인을 따라 올라가며 지정된 속성을 찾습니다. 프로토타입 체인 상의 어떤 객체가 지정된 고유 속성을 가지고 있다면, 해당 속성의 속성 설명자set 속성이 반환됩니다. 만약 그 속성이 데이터 속성이라면, undefined가 반환됩니다. 전체 프로토타입 체인을 따라 속성을 찾지 못한 경우에도 undefined가 반환됩니다.

__lookupSetter__() 메서드는 명세서에서 "규범적 선택사항(normative optional)"으로 정의되어 있습니다. 이는 모든 구현체가 이 메서드를 반드시 구현할 필요는 없다는 의미입니다. 그러나 모든 주요 브라우저들이 이를 구현하고 있으며, 지속적인 사용으로 인해 앞으로 제거될 가능성은 낮습니다. 만약 브라우저가 __lookupSetter__()를 구현한다면, __lookupGetter__(), __defineGetter__(), 그리고 __defineSetter__() 메서드도 함께 구현해야 합니다.

예제

__lookupSetter__() 사용하기

js
const obj = {
  set foo(value) {
    this.bar = value;
  },
};

obj.__lookupSetter__("foo");
// [Function: set foo]

표준 방법으로 속성의 설정자 검색하기

속성의 설정자를 찾을 때는 Object.getOwnPropertyDescriptor() API를 사용해야 합니다. __lookupSetter__()와 비교하자면, 이 메서드는 심볼 속성도 찾을 수 있습니다. Object.getOwnPropertyDescriptor() 메서드는 또한 null-프로토타입 객체에서도 작동합니다. 이러한 객체들은 Object.prototype을 상속받지 않아 __lookupSetter__() 메서드를 가지고 있지 않습니다. 만약 __lookupSetter__()의 프로토타입 체인을 따라 올라가는 동작이 중요하다면, Object.getPrototypeOf()를 사용하여 직접 구현할 수 있습니다.

js
const obj = {
  set foo(value) {
    this.bar = value;
  },
};

Object.getOwnPropertyDescriptor(obj, "foo").set;
// [Function: set foo]
js
const obj2 = {
  __proto__: {
    set foo(value) {
      this.bar = value;
    },
  },
};

function findSetter(obj, prop) {
  while (obj) {
    const desc = Object.getOwnPropertyDescriptor(obj, prop);
    if (desc) {
      return desc.set;
    }
    obj = Object.getPrototypeOf(obj);
  }
}

console.log(findSetter(obj2, "foo")); // [Function: set foo]

명세서

Specification
ECMAScript® 2025 Language Specification
# sec-object.prototype.__lookupSetter__

브라우저 호환성

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
__lookupSetter__
Deprecated

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Deprecated. Not for use in new websites.

같이 보기