소개
이 랩에서는 JavaScript 를 사용하여 객체의 고유한 열거 가능한 속성에서 함수 속성 이름의 배열을 얻는 방법을 살펴봅니다. 객체의 속성을 반복하고 필요에 따라 상속된 속성을 포함하기 위해 Object.keys() 및 Object.getPrototypeOf()를 사용하는 방법을 배웁니다. 또한 Array.prototype.filter()를 사용하여 함수가 아닌 속성을 필터링합니다.
JavaScript 에서 객체로부터 함수 속성 이름 가져오는 방법
객체에서 함수 속성 이름의 배열을 얻으려면 아래 제공된 functions 함수를 사용하십시오. 이 함수는 선택적으로 상속된 속성도 포함할 수 있습니다.
functions 함수를 사용하는 방법은 다음과 같습니다.
- 터미널/SSH 를 열고
node를 입력하여 코딩 연습을 시작합니다. Object.keys()를 사용하여 객체의 고유한 속성을 반복합니다.- 상속된 속성을 포함하려면
inherited인수를true로 설정하고Object.getPrototypeOf()를 사용하여 객체의 상속된 속성을 가져옵니다. Array.prototype.filter()를 사용하여 함수인 속성만 유지합니다.- 기본적으로 상속된 속성을 포함하지 않으려면 두 번째 인수
inherited를 생략합니다.
const functions = (obj, inherited = false) =>
(inherited
? [...Object.keys(obj), ...Object.keys(Object.getPrototypeOf(obj))]
: Object.keys(obj)
).filter((key) => typeof obj[key] === "function");
functions 함수의 사용 예는 다음과 같습니다.
function Foo() {
this.a = () => 1;
this.b = () => 2;
}
Foo.prototype.c = () => 3;
functions(new Foo()); // ['a', 'b']
functions(new Foo(), true); // ['a', 'b', 'c']
요약
축하합니다! 함수 속성 이름 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.