【问题标题】:How to get parent object when context is function?上下文为函数时如何获取父对象?
【发布时间】:2016-06-16 09:42:54
【问题描述】:
我想为对象方法编写 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')'
【问题讨论】:
标签:
javascript
inheritance
partial-application
【解决方案2】:
// 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'));