值通過(guò)引用傳遞。在 javascript 單例模式中傳遞值:1. 在構(gòu)造函數(shù)中傳遞值。2. 在公開方法中存儲(chǔ)值。3. 在需要時(shí)檢索值。
JavaScript 單例模式中的值傳遞
在 JavaScript 中,單例模式是一種設(shè)計(jì)模式,它確保只有一個(gè)類的實(shí)例被創(chuàng)建和使用。通過(guò)創(chuàng)建一個(gè)私有變量來(lái)存儲(chǔ)實(shí)例,并提供一個(gè)公開方法來(lái)檢索實(shí)例,可以實(shí)現(xiàn)單例模式。
值傳遞
在 JavaScript 中,值通過(guò)引用傳遞。這意味著傳遞給函數(shù)或?qū)ο蟮淖兞康膶?shí)際值不會(huì)被復(fù)制,而是其存儲(chǔ)位置的引用會(huì)被傳遞。
如何在單例模式中傳遞值
要將值傳遞給單例模式中的實(shí)例,可以使用以下步驟:
-
在創(chuàng)建實(shí)例時(shí),將值作為參數(shù)傳遞給構(gòu)造函數(shù)。
在公開方法中,將傳遞的值存儲(chǔ)在一個(gè)私有變量中。
當(dāng)需要使用該值時(shí),從私有變量中檢索它。
示例
下面是一個(gè) JavaScript 單例模式的示例,它演示了如何傳遞值:
const Singleton = (function () { let instance; function createInstance(value) { if (!instance) { instance = { value: value }; } return instance; } return { getInstance: function (value) { return createInstance(value); } }; })(); const instance1 = Singleton.getInstance(10); console.log(instance1.value); // 10 const instance2 = Singleton.getInstance(20); console.log(instance2.value); // 10
登錄后復(fù)制
注意:
在此示例中,value 參數(shù)在 createInstance 函數(shù)中存儲(chǔ)在一個(gè)私有變量中,并可以通過(guò) instance.value 訪問(wèn)。
getInstance 方法返回單例的實(shí)例,該實(shí)例包含傳遞給構(gòu)造函數(shù)的值。
instance1 和 instance2 引用相同的單例實(shí)例,因此它們都具有相同的值(10),即使在創(chuàng)建 instance2 時(shí)傳遞了不同的值。這是因?yàn)?JavaScript 值通過(guò)引用傳遞。