js中的設計模式

2022-07-07 11:48:10 字數 1485 閱讀 9530

定義:**模式是為乙個物件提供乙個代用品或佔位符,以便控制他的訪問

**b可以幫主體a過濾掉一些請求,這些請求可以在**b處被拒絕掉

function speak(msg) 

function proxy(msg)

return speak(msg)

}console.log(proxy(''))

console.log(proxy('哈哈'))

虛擬**可以把一些開銷很大的物件,延遲到真正需要它的時候才去建立

最典型的應用是函式節流(throttle)

function throttle(fn, wait) , wait)}}

}

快取**可以為一些開銷較大的運算結果提供暫時儲存,在下次運算時,如果傳遞進來的引數跟之前一致,則可以直接返回前面的儲存運算結果

var calc = function() 

var proxycalc = (function()

return function()

console.log('只執行一次')

}})()

console.log(proxycalc(1,3,4,5,6))

console.log(proxycalc(1,3,4,5,6))

迭代器模式是指提供一種方法順序訪問乙個聚合物件中的各個元素,而又不需要暴露該物件的內部表示

實現乙個簡單的迭代器

var each = function (ary, callback) )

//0 1

//1 3

//2 4

//3 5

each(, (i, n) => )

// a 1

// b 2

// c 3

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生變化時,所有依賴於它的物件都將會得到通知

簡單實現

class observe

}add(sub, fn)

typeof fn ==='function' && this.subs[sub].push(fn)

}trigger()

for (let i=0, fn; fn = fns[i++];)

}remove(key, fn)

if(!fn) else }}

}}var observe = new observe()

observe.add('a', function(val) )

observe.add('b', function(val) )

observe.add('a', function(val) )

observe.remove('b')

observe.trigger('a', 'a')

observe.trigger('b', 'b')

JS中的狀態模式設計

1.學過js的童鞋 肯定碰見過這樣的情況 如果i 1 會怎麼樣 i 2會怎麼樣 i 3會怎麼樣 碰見這樣問題 我們通常會想到 用if和else來進行判斷 if i 1 else if i 2 else if i 3 else console.log 其他情況 當然我們也可以用 switch case...

js的設計模式

單例模式 應用 function msg msg.prototype.init function str var singlecase function instance.init text return instance var m1 singlecase hello var m2 singlec...

JS設計模式

什麼是模式?什麼是設計模式?設計模式是解決軟體設計常見問題的可復用方案 什麼是反模式?反模式是一種針對某個特定問題的不良解決方案,該方案會導致槽糕的情況發生 單例模式?皇帝單例模式 var kingsingleton function return 皇帝存在返回皇帝 return instance ...