Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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_Oop_Dependency Injection - Fatal编程技术网

惯用Javascript依赖关系图

惯用Javascript依赖关系图,javascript,oop,dependency-injection,Javascript,Oop,Dependency Injection,考虑到下面的Javascript,将MyService对象注入myMethod中是否更好/更惯用,这样就可以注入MyService的假版本进行测试?还是我遗漏了什么 var myObject = { myMethod: function() { var myService = new MyService(); return myService.doSomething(); } } 依赖项注入始终优先于对依赖项进行硬编码。此外,通过对接口进行编码(假设myObject实例

考虑到下面的Javascript,将
MyService
对象注入
myMethod
中是否更好/更惯用,这样就可以注入
MyService
的假版本进行测试?还是我遗漏了什么

var myObject = {
  myMethod: function() {
    var myService = new MyService();
    return myService.doSomething();
  }
}

依赖项注入始终优先于对依赖项进行硬编码。此外,通过对接口进行编码(假设myObject实例已获得具有
doSomething()
方法的服务对象的副本),可以在这里派上用场。

依赖项注入始终优先于对依赖项进行硬编码。另外,通过对接口进行编码(假设myObject实例已经获得了一个具有
doSomething()
方法的服务对象的副本)也可以在这里派上用场。

通过“接口”,我想您的意思是
MyService
的原型被设置为
Service
?考虑到JS中的方法可以动态更改,除了在我的测试中简单地重新定义(比如)
doSomething
之外,这种方法还有什么好处。它没有性能增益。它只允许读者理解契约(接口),然后遵循实现内部的逻辑,从而使程序更具可读性。没问题。我希望我能帮助您。我想您所说的“界面”是指
MyService
的原型设置为
Service
?考虑到JS中的方法可以动态更改,除了在我的测试中简单地重新定义(比如)
doSomething
之外,这种方法还有什么好处。它没有性能增益。它只允许读者理解契约(接口),然后遵循实现内部的逻辑,从而使程序更具可读性。没问题。我希望我能帮助你。