我發現自己越來越多地寫了下面的JavaScript,我想知道這是否是一種常見的模式,如果是這樣,它叫什麼?的代碼和圖案的這是一個有效的模式,它叫什麼?
部分:
var fruits = ["pear", "apple", "banana"];
var getNextFruit = function() {
var _index = 0,
_numberOfFruits = fruits.length;
getNextFruit = function() {
render(fruits[_index]);
_index = (_index + 1) % _numberOfFruits;
}
getNextFruit();
};
我有一個函數,沒有參數,我重新定義函數,並立即調用它的函數的內部。在函數式語言中,這可能是一個返回的函數,JavaScript使得它更容易,因爲您可以重用函數的名稱。因此,您可以擴展功能而無需更改您的實施。
我也可以想象這種模式對於記憶是非常有用的,你的「緩存」是我們環繞的狀態。
我甚至有時在函數中使用get
或set
方法實現此功能,如果它有意義,我可以獲得該狀態。添加的小提琴顯示了一個例子。
因爲這是一個主要的JavaScript面向問題:The obligatory fiddle
不確定渲染是什麼,但一個接一個地「生成」一個集合的元素而不關心底層數據類型稱爲[iterator](https://en.wikipedia.org/wiki/Iterator_pattern)模式。 –
該模式被稱爲「自定義函數」,該名稱已在Stoyanov的書「Javascript Patterns」中介紹過。 –
爲什麼不在函數中定義'fruits'變量和數組? – nnnnnn