Javascript 如何将其与高阶函数绑定

Javascript 如何将其与高阶函数绑定,javascript,class,this,bind,higher-order-functions,Javascript,Class,This,Bind,Higher Order Functions,我在某个文件中有这个高阶函数 withTry.js 具有tryFunc的函数{ 返回函数…args{ 试一试{ func…args; } 捕捉错误{ console.log`ERROR:${ERROR}` } } } 我试图在另一个类似这样的文件中调用它 foo.js const withTry=需要“路径”; 函数类{ 这个.m=null; 这个。s=0; } /*我正在使用withTry类原型*/ someClass.prototype.func=带有TryFunctionData{ /*

我在某个文件中有这个高阶函数

withTry.js

具有tryFunc的函数{ 返回函数…args{ 试一试{ func…args; } 捕捉错误{ console.log`ERROR:${ERROR}` } } } 我试图在另一个类似这样的文件中调用它

foo.js

const withTry=需要“路径”; 函数类{ 这个.m=null; 这个。s=0; } /*我正在使用withTry类原型*/ someClass.prototype.func=带有TryFunctionData{ /* 问题就在这里 这个值是全局的,这是有意义的,因为它指的是withTry HOF的全局 */ console.logthis.s/*未定义*/ }; 我的问题是如何绑定someClass的this

如果您不想绑定它,您想通过以下方式传递动态this值:

function withTry(func) {
    return function(...args) {
        try {
            func.call(this, ...args);
//              ^^^^^^^^^^^
        } catch(error){
            console.log(`ERROR: ${error}`)
        }
    }
}
作为替代,您还可以使用

接下来要添加的是一个返回语句,用于将返回值传递回:-

如果不想绑定它,则需要通过以下方式传递此值的动态值:

function withTry(func) {
    return function(...args) {
        try {
            func.call(this, ...args);
//              ^^^^^^^^^^^
        } catch(error){
            console.log(`ERROR: ${error}`)
        }
    }
}
作为替代,您还可以使用


接下来要添加的是一个返回语句,用于返回返回值:-

我的答案与Bergi的基本相同:

具有tryFunc的函数{ 返回函数…args{ 试一试{ //func…args; func.applythis,args } 捕捉错误{ console.log`ERROR:${ERROR}` } } } 函数类{ 这个.m=null; 这个s=2; } someClass.prototype.func=带有TryFunctionData{ console.logthis.s; }; var x=新的someClass;
x、 func 我的答案与Bergi的基本相同:

具有tryFunc的函数{ 返回函数…args{ 试一试{ //func…args; func.applythis,args } 捕捉错误{ console.log`ERROR:${ERROR}` } } } 函数类{ 这个.m=null; 这个s=2; } someClass.prototype.func=带有TryFunctionData{ console.logthis.s; }; var x=新的someClass; x、 func;我假设你以某种方式调用func,你能补充一下这个问题吗?我假设你以某种方式调用func,你能补充一下这个问题吗?