2017-12-08 31 views
0

을 무시할 참조로 함수를 전달 나는이 기능을 재정의하는 장식 :JS 그것을

이제
function decorator(target, key, descriptor) { 
    descriptor.value = function() { 
     console.log('overridden') 
    } 
} 

내가 다른 함수에서 재정의를 수행하고자하는 나는 따라서에서 인수로 전달해야

function decorator(target, key, descriptor) { 
    replaceMethod(descriptor.value) 
} 

function replaceMethod(originalMethod) { 
    originalMethod = function() { 
     console.log('overridden') 
    } 
} 

가이 방법으로 그것을 어떻게 든 가능 : 방법 그래서 나는 아직도 방법을 대체 할 수있다?

+1

싫다. javascript에는 없습니다. –

+1

'descriptor.value'는이 함수입니까? 그리고 그것을 무시하고 싶습니까? –

+1

귀하의 설명이 모호합니다. 첫 번째 예제에서는 데코레이터 자체의 속성에, 다른 하나는 설명자에 대한 속성에 씁니다. – Nit

답변

2

이 당신의 목표를 만족시킬 수 있습니다

function decorator(target, key, descriptor) { 
    replaceMethod(descriptor, 'value') 
} 

function replaceMethod(obj, prop) { 
    obj[prop] = function() { 
     console.log('overridden') 
    } 
} 
1

이 작동됩니다

function bark(target, key, descriptor) { 
    replaceWith(descriptor, function(msg){ 
     console.log("Woof!"); 
    }); 
    return descriptor; 
} 

function replaceWith(descriptor, value){ 
    descriptor.value = value; 
} 

class Animal { 
    @bark 
    greet(msg) { 
     console.log(msg); 
    } 
} 

new Animal().greet("Hello"); 

https://jsfiddle.net/DerekL/0sd9Lvs0/