2016-06-16 1 views
0

개체 메서드에 curring 함수를 작성하고 싶습니다.컨텍스트가 작동 할 때 부모 개체를 얻는 방법?

Function.prototype.curry = function(){ 
 
    var originalFunction = this; 
 
    var args = ...; // here goes logic embracing arguments 
 
    var bind = ???; //how to get reference to someObject ??? 
 
    return function(){ 
 
    return originalFunction.apply(bind, args); 
 
    } 
 
} 
 

 
var someObject = { 
 
    doSomething : function (param1, param2, param3){ 
 
    //do something with params 
 
    return param1 + ' ' + param2 + ' ' + param3; 
 
    } 
 
} 
 

 
someObject.doSomethingCurried = someObject.doSomething.curry('param1 value', 'param2 value'); 
 

 
//I want to be able to do: 
 
someObject.doSomethingCurried('param3 value')'

답변

0

some tricks이 있지만, 사실 당신은 기본 bind처럼 첫 번째 인수로 상황을 전달해야합니다 :이 가능하도록합니다.

0

// Code goes here 
 

 
Function.prototype.curry = function (context,arg){ 
 
    var originalFunction = this; 
 
    var args = Array.prototype.slice.call(arguments,1) ; // here goes logic embracing arguments 
 
    var bind = context; //how to get reference to someObject ??? 
 
    return function(){ 
 
    return originalFunction.apply(bind, args.concat(Array.prototype.slice.call(arguments))); 
 
    } 
 
} 
 

 
var someObject = { 
 
    myObj:"Myobj", 
 
    doSomething : function (param1, param2, param3){ 
 
    console.log(this); 
 
    //do something with params 
 
    return param1 + ' ' + param2 + ' ' + param3; 
 
    } 
 
} 
 

 
someObject.doSomethingCurried = someObject.doSomething.curry(someObject,'param1 value', 'param2 value'); 
 

 
//I want to be able to do: 
 
console.log(someObject.doSomethingCurried('param3 value'));

관련 문제