gpt4 book ai didi

javascript - 如何将依赖项传递给 AngularJS 中的原型(prototype)函数

转载 作者:行者123 更新时间:2023-11-30 16:11:15 24 4
gpt4 key购买 nike

在原型(prototype)函数中是否有更简洁的方法来访问依赖项(即构造函数参数)?特别适合 AngularJS Services .

我只知道

function SomeSrvc($http, ...other deps...) {
var srvc = this;

// Verbose way of storing dependencies
srvc.$http = $http;
srvc.dep2 = dep2;
srvc.dep3 = dep3;
srvc.dep4 = dep4;
}

SomeSrvc.prototype.doSomething = function() {
var srvc = this;
// Do stuff with srvc.$http and other srvc.deps...
};

最佳答案

我知道的最短的方法是避免在外部作用域中使用原型(prototype)并简单地使用闭包:

function SomeSrvc($http, ...other deps...) {
var srvc = this;

srvc.doSomething = function() {
// just use $http without this / srvc
};
}

短小精悍。如果你真的喜欢类似原型(prototype)的语法,只需调整缩进(但在我看来这会更难看):

function SomeSrvc($http, ...other deps...) {
var srvc = this;



srvc.doSomething = function() {
// Do stuff with srvc.$http and other srvc.deps...
};

}

这会给您带来相同的效果 - 使用 new 运算符创建的对象将具有此功能,并且 Angular 服务是通过这种方式创建的。

此外,这种方式有一个很好的副作用。它不会在服务对象上创建变量,因此可以将它们视为私有(private),当将所有变量分配给服务时使它们成为public并且可以从另一个 Angular 访问模块。目前,只需注入(inject)您的服务,您就可以通过调用例如使用所有注入(inject)的模块

SomeSrvc.$http

这完全违背了依赖注入(inject)的整个理念。

关于javascript - 如何将依赖项传递给 AngularJS 中的原型(prototype)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36223650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com