Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提供'的最佳实践;这';不同类中方法的上下文_Javascript - Fatal编程技术网

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);}
。如果
实用程序
需要访问
调用者
中的其他方法,那么这听起来像是一种完全不同的模式。也许你可以再描述一下上下文?