Web Analytics

metho

⭐ 222 stars Korean by jonrandy

Metho - 메서드를 위한 새로운 방법

심볼(Symbol)의 도움으로 객체에 '동적 속성'을 안전하게 추가할 수 있게 해주는 작은 라이브러리입니다. 이것은 네이티브 자바스크립트 타입에 새로운 기능을 부여하는 '몽키 패칭(monkey patching)' 등 여러 용도에 유용합니다 (metho-number, metho-set, metho-function, metho-array, 그리고 metho-string을 참조).

가능한 몇 가지 예시는 다음과 같습니다:

import * as Metho from 'metho'

const asHex = Metho.add( Number.prototype, function() { return this.toString(16) } )

console.log(65534[asHex]) // fffe

const upper = Metho.add( String.prototype, function() { return this.toUpperCase() } ) const chunk = Metho.add( String.prototype, function(length) { return this.match(new RegExp('.{1,' + length + '}', 'g')) } )

console.log("Hello World!"[upper][chunk(2)]) // ['HE', 'LL', 'O ', 'WO', 'RL', 'D!']

사용 방법

Metho는 상당히 간단하며, 대상 객체에 이러한 '동적 속성'을 추가하기 위한 4가지 기본 기능을 제공합니다. 모든 함수는 Symbol 또는 Symbol을 반환하는 함수를 반환합니다. 이 Symbol들은 속성의 '이름'입니다.

add(targetOrTargets, function, [options={}])

이 함수가 아마 가장 자주 필요할 것입니다. 전달된 함수가 기대하는 인수의 수에 따라 addWithParams 또는 addSimple을 사용합니다 - 0이면 addSimple이 사용되고, 그 외의 경우에는 outerSyntax 옵션의 상태에 따라 addWithParams 또는 addProperty가 사용됩니다. outerSyntaxtrue로 설정된 상태에서 추가하면 - 속성의 문법은 보다 일반적인 함수 호출 문법이 됩니다:

// options.outerSyntax = false
object[property(x)]

// options.outerSyntax = true objectproperty

outerSyntax를 사용하지 않을 때 약간의 성능 저하가 발생하므로 스위치를 사용하는 이유입니다. 함수에 대해 여러 대상(target)을 지정하려면 대상의 배열을 전달해야 합니다.

중요 참고 사항 - 첫 번째 인수부터 시작하는 기본 인수가 있는 함수는 add 메서드와 함께 올바르게 작동하지 않는 것처럼 보인다는 지적이 있었습니다. 이상하게 보일 수 있지만, 실제로는 인수를 실제로 기대하지 않기 때문에 정상적으로 작동하는 것입니다 (자세한 설명은 MDN의 function.length 정보를 참조하십시오). 이러한 메서드를 추가하려면 addWithParams 메서드를 직접 사용해야 합니다.

addWithParams(targetOrTargets, function, [options={}])

매개변수를 받을 수 있는 '동적 속성'을 추가합니다. 호출 시 매개변수를 전혀 전달하지 않으려면 괄호를 생략할 수 있으며, 이는 모든 매개변수가 기본값이거나 완전히 선택적인 함수에 특히 유용합니다.
console.log(object[property(param1, param2)]  // call the dynamic property and pass parameters
console.log(object[propertyWithDefaultParams])  // equivalent to object[propertyWithDefaultParams()]

addSimple(targetOrTargets, function, [options={}])

매개변수가 없는 '동적 속성'을 추가합니다.
console.log(object[property])

addProperty(targetOrTargets, propertyValue, [options={}])

대상에 일반 속성을 추가합니다(함수일 경우 자동으로 호출되지 않음).
console.log(object[property])

고급 사용법 및 options

아래 내용 중 대부분은 Metho 'methods'가 서로 다른 라이브러리의 서로 다른 대상 간에 공유될 수 있는 기능을 지원하기 위해 추가되었습니다(예: 두 번째 라이브러리가 해당 메서드를 사용할 때 'method'가 더 많은 기능을 획득함). 이 기능이 실제로 어떻게 사용되는지에 대한 예는 metho-stringmetho-array 라이브러리를 참조하십시오 - 여기서 이 기능은 reversechunk와 같은 공유 'methods'를 생성하는 데 사용됩니다.

옵션 symbolName

이 옵션은 생성된 Symbol에 이름을 부여하는 데 사용됩니다(즉, new Symbol(symbolName으로 생성될 때).

옵션 register

생성되거나 사용된 Symbol(또는 함수)을 Metho 내의 내부 레지스트리에 등록하는 데 사용됩니다 - symbolName과 함께 사용되며, 레지스트리 내에서 '키'가 됩니다.

옵션 useSymbol

새로운 Symbol을 생성하는 대신 기존 Symbol을 사용할 수 있게 합니다. 이 옵션은 addPropertyaddSimple에만 제공되며, 따라서 add에도 전달할 수 있습니다.

data

Metho가 의도한 목적을 위해 생성한 심볼로, 대상 객체에 임의의 '데이터'를 저장하는 키로 사용됩니다.

myTarget[Metho.data] = "Arbitrary value"

getRegistered(name)

이는 주어진 이름을 키로 하여 레지스트리에 저장된 Symbol 또는 함수를 반환합니다.

addWithSharedSymbolName(target, function, symbolName)

새로운 대상에 새로운 '메서드'를 추가할 때, 해당 '메서드'가 이미 존재할 수 있는 경우를 지원하는 편의 함수입니다. 이는 위에서 언급한 metho-stringmetho-array와 함께 이해하는 것이 가장 좋습니다.

--- Tranlated By Open Ai Tx | Last indexed: 2026-06-19 ---