Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/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 AngularJS-是依赖注入还是多重继承?_Javascript_Angularjs_Oop_Dependency Injection - Fatal编程技术网

Javascript AngularJS-是依赖注入还是多重继承?

Javascript AngularJS-是依赖注入还是多重继承?,javascript,angularjs,oop,dependency-injection,Javascript,Angularjs,Oop,Dependency Injection,我读过的大部分文章都是关于依赖注入的 定义控制器时,您可以将其他类注入其中,使其操作/属性可从调用类访问 因此,我定义了contentTypeFactory,并将其注入contentTypeController,从而获得工厂的所有好处,并可以调用工厂中的属性和方法 ie:app.controller('contentTypeController',['$scope','$log','contentTypeFactory',… 从面向对象的角度来看,这看起来很像多重继承,而不是依赖注入 有人能澄清

我读过的大部分文章都是关于依赖注入的

定义控制器时,您可以将其他类注入其中,使其操作/属性可从调用类访问

因此,我定义了
contentTypeFactory
,并将其注入
contentTypeController
,从而获得工厂的所有好处,并可以调用工厂中的属性和方法

ie:
app.controller('contentTypeController',['$scope','$log','contentTypeFactory',…

从面向对象的角度来看,这看起来很像多重继承,而不是依赖注入


有人能澄清一下吗?

我认为简单的答案是,你所描述的不是多重继承

JavaScript支持原型继承,而不是多重继承

当您使用依赖项注入时,您倾向于组合而不是继承。依赖项是“HAS a”关系,而不是“is a”关系

在您的特定场景中,您的控制器“具有”contentTypeFactory。它不是contentTypeFactory。您的控制器将工作委托给它


我希望这能回答你的问题。

我认为简单的答案是,你所描述的不是多重继承

JavaScript支持原型继承,而不是多重继承

当您使用依赖项注入时,您倾向于组合而不是继承。依赖项是“HAS a”关系,而不是“is a”关系

在您的特定场景中,您的控制器“具有”contentTypeFactory。它不是contentTypeFactory。您的控制器将工作委托给它


我希望这能回答你的问题。对我来说,多重继承意味着继承父类的接口和行为。我会考虑角度相当清晰的依赖注入,并且对象是由服务组成的。等等,从OO的角度来看,这是合成而不是继承。我不认为它是继承,因为如果其他一些合作。de在其他地方称为

contentTypeController.myMethod()
,它不会在
contentTypeFactory
中查找
myMethod()
。它只会在
contentTypeController
中查找。您可以在
contentTypeController
中创建一个名为
contentTypeFactory.myMethod()的包装器方法,但是正如米迦勒所说的,这将是合成,而不是继承。多重继承对我来说意味着继承父类的接口和行为。我会考虑角度相当清晰的依赖注入,并且对象是由服务组成的。从OO的角度来看,这是合成而不是继承。我不认为它是继承的。例如,因为如果其他地方的一些代码调用了
contentTypeController.myMethod()
,它就不会查找
myMethod()
contentTypeFactory
中。它只会在
contentTypeController
中查找。您可以在
contentTypeController
中创建一个名为
contentTypeFactory.myMethod()
的包装器方法,但正如michael所说,这将是组合,而不是继承。