簡體   English   中英

為什么 Angular.js 服務是用“new”創建的?

[英]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,僅僅因為創建聲明函數的新實例似乎有點毫無意義並且矯枉過正=\\

如果你研究這個非常有用的鏈接

關於 SO 的信息鏈接

還有一個關於 SO 的鏈接

以防萬一前兩個 SO 鏈接被遺漏,這里還有另一個

您會發現工廠、服務和提供者之間的唯一區別是運行以支持該功能的 Anguljarjs 開銷代碼。

在您提到的服務或工廠的情況下,服務將利用 this.property,並且可能包括它自己的函數添加原型鏈和正常的 JS 構造函數操作。

您也可以在工廠包裝器中完成所有這些操作,但您不會使用“new”運算符在控制器/指令中實例化工廠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM