[英]Why are Angular.js Services created with 'new'?
根據這個問題:
angular.service 與 angular.factory
服務由 angular 使用 new 關鍵字創建,這意味着返回對象的new
實例。
例如:
app.service('helloWorldService', function() {
this.hello = function() {
return "Hello World"; };
}
);
然而,對於工廠,他們不是。
這意味着開發人員可以(如果他們選擇)創建新實例(通過使用關鍵字new
)——因此,我假設為什么它被稱為工廠。
我的問題是:
為什么 angular 開始創建一個新的服務實例?
我同意服務應該是單例,它們是,但是創建返回函數的新實例有什么意義? 對於服務來說,如果 Angular 只是返回聲明的函數,那豈不是更好——就像他們對工廠所做的那樣。
這對服務來說不是更有意義嗎?
我問的原因是因為我在一個抽象層上創建服務,但我不確定我是否真的應該在工廠 API 上使用服務 API,僅僅因為創建聲明函數的新實例似乎有點毫無意義並且矯枉過正=\\
如果你研究這個非常有用的鏈接
您會發現工廠、服務和提供者之間的唯一區別是運行以支持該功能的 Anguljarjs 開銷代碼。
在您提到的服務或工廠的情況下,服務將利用 this.property,並且可能包括它自己的函數添加原型鏈和正常的 JS 構造函數操作。
您也可以在工廠包裝器中完成所有這些操作,但您不會使用“new”運算符在控制器/指令中實例化工廠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.