Javascript 提供'的最佳实践;这';不同类中方法的上下文
我有两个类,其中一个是整个应用程序使用的通用实用程序类。我想引用被调用方实用程序类中调用方类的Javascript 提供'的最佳实践;这';不同类中方法的上下文,javascript,Javascript,我有两个类,其中一个是整个应用程序使用的通用实用程序类。我想引用被调用方实用程序类中调用方类的this属性 我不确定这方面的最佳做法是什么 我提供了一个我正在尝试做的例子 我可以使用.call提供正确的此上下文,也可以将此作为函数参数传入 类调用者{ doSomething(){ calledMethod.call(这是'paramStr'); Utility.calledMethodWithThis(this,'paramStr'); } 不做任何事(参数){ 控制台日志(param); }
this
属性
我不确定这方面的最佳做法是什么
我提供了一个我正在尝试做的例子
我可以使用.call
提供正确的此
上下文,也可以将此
作为函数参数传入
类调用者{
doSomething(){
calledMethod.call(这是'paramStr');
Utility.calledMethodWithThis(this,'paramStr');
}
不做任何事(参数){
控制台日志(param);
}
}
//用于整个应用程序的公用程序方法的共享类
类效用{
静态调用方法(参数){
这个。不做任何事(param);
}
静态调用MethodWithThis(self,param){
self.doAnotherThing(参数);
}
}
const caller=new caller();
caller.doSomething()代码>这看起来像是一个可以利用mixin的场景
以下是本页中的示例:
您的代码可能如下所示:
// Shared Class of utility methods used for entire application
let utilityMixin = {
calledMethod(param) {
this.doAnotherThing(param);
}
}
class Caller {
constructor() {
this.mystring = 'hello!'
}
doSomething() {
this.calledMethod(this.mystring);
}
doAnotherThing(param) {
console.log(param);
}
}
Object.assign(Caller.prototype, utilityMixin );
const caller = new Caller();
caller.doSomething();
使用function.call()
——这就是它的用途。实用程序
需要知道这实际上是什么吗?通常的方法是只传递回调本身:Utility.calledMethod.call(this.doAnotherThing,'paramStr')
和静态调用方法(callback,param){callback(param);}
。如果实用程序
需要访问调用者
中的其他方法,那么这听起来像是一种完全不同的模式。也许你可以再描述一下上下文?