2016-07-14 4 views
1

클래스의 setter 함수를 매개 변수로 제출하려고합니다.ES6 클래스 설정자를 함수로 사용합니다.

하자 asume이있다 :

class A { 
    set foo(foo) { 
     this._foo = foo 
    } 
} 

그러나, 나는 물론 obj.foo의 값이 게터를 호출 제출됩니다,이 f(obj.foo)처럼 function f(setter) { setter(); }를 호출하고있어합니다.

화살표 기능 (foo) => obj.foo = foo을 사용하려고 생각했지만 작동합니다. 그러나 setter 기능을 얻으려면 f(obj.setFoo)과 같은 더 짧은 방법이 있어야합니다.

아이디어를 환영합니다.

+0

어떤 함수 f (OBJ, 세터, 값) {OBJ [세터] = 값 '에 대한; }' –

답변

1

하지만 setter 기능을 사용하려면 f (obj.setFoo)와 같은 더 짧은 방법이 있어야합니다.

아니요. 더 이상 방법이,

var setFoo = Object.getOwnPropertyDescriptor(obj, 'foo').set; 
setFoo.call(obj, 'bar'); 

접근 자 함수는 internal property attributes에 저장 반사를 사용하지 않고 액세스 할 수 없습니다 있습니다. 화살표 함수 솔루션을 사용하거나 클래스의 접근 자 속성 대신 getter/setter 함수를 정의하십시오.

1

당신은 항상 세터를 반환하는 게터를 정의 할 수 있습니다 :

class A { 
 
    get foo() { 
 
    return Object.getOwnPropertyDescriptor(A.prototype, 'foo').set; 
 
    } 
 
    set foo(foo) { 
 
    this._foo = foo; 
 
    } 
 
} 
 
var obj = new A(); 
 
(function(setter) { 
 
    setter.call(obj, 123); 
 
    console.log(obj._foo); // 123 
 
})(obj.foo);

관련 문제