Javascript 可变对象的依赖注入

Javascript 可变对象的依赖注入,javascript,dependency-injection,Javascript,Dependency Injection,把将来可能不起作用的东西传给一个班级是不是一个坏主意 例如,将数据库连接(或任何可能使其方法变得无用的东西)传递给多个类?对于JavaScript,这些都是通过引用传递的,因此,如果在类之外取消数据库连接,那么类中的对象将无法工作?现在,如果看到所有在方法中使用数据库的模型和事物都无法工作(没有注意到所有使用对象的类现在都无法使用),那么这将是一个糟糕的情况。数据库连接是传递到类中以进行依赖项注入的完美示例 依赖注入对于测试模型/类非常有用,在测试过程中,您希望“模拟”某些服务,例如数据库。在测

把将来可能不起作用的东西传给一个班级是不是一个坏主意


例如,将数据库连接(或任何可能使其方法变得无用的东西)传递给多个类?对于JavaScript,这些都是通过引用传递的,因此,如果在类之外取消数据库连接,那么类中的对象将无法工作?现在,如果看到所有在方法中使用数据库的模型和事物都无法工作(没有注意到所有使用对象的类现在都无法使用),那么这将是一个糟糕的情况。

数据库连接是传递到类中以进行依赖项注入的完美示例


依赖注入对于测试模型/类非常有用,在测试过程中,您希望“模拟”某些服务,例如数据库。在测试中,不要“注入”数据库对象,而是“注入”模拟数据库功能的模拟对象。

不要为“类”注入故障点或更多自定义工作,而是注入能够有效地自行处理问题的功能。@dandavis感谢您的建议。我将如何注入数据库?编辑:在模型中使用数据库。您不注入数据库,这会引入太多的故障点,并混淆您的顾虑。如果您在类中使用原始数据库,您可能会发现自己经常重复代码。您需要一个调用数据库并向调用者返回数据或错误的方法。在您的类中,您需要同时处理错误和数据。@丹达维这个神秘的数据库调用程序叫什么?依赖注入容器?有我能读的文章吗?你能给我一个答案让我接受吗DYou控制代码,所以不要关闭数据库连接-在编程中,如果你执行“x”操作,会有很多东西会断开-我认为传入连接或围绕连接的对象没有问题。因此,制作一个从数据库获取数据的模拟对象,还是说仅使用数据库的依赖项注入。如果是从数据库获取数据的模拟对象,那么如果同一个数据库中有多个模拟对象,我是否在每个模拟对象中实例化一个新数据库?模拟对象可以是模拟数据库的对象,但不是数据库。例如,您可能会对某个查询返回的行列表进行硬编码。在这种情况下,您将从测试逻辑中删除数据库,而是测试注入的类/模型的代码。好的,理想情况下,所有与数据库的连接都应在该对象中处理。是,您希望将数据库抽象到对象中,以便用模拟对象替换它。