用闭包实现重载的过程学习闭包
生活随笔
收集整理的這篇文章主要介紹了
用闭包实现重载的过程学习闭包
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用閉包實現重載的過程學習閉包
let global = {overLoad:function(){} }; function Refactoring(func) {let oldFunc = global.overLoad; global.overLoad = function () { if (func.length === arguments.length) {//js函數length屬性表示有多少個參數return func.apply(this, arguments);//arguments:調用global.overLoad函數的參數} else if (typeof oldFunc === "function") {return oldFunc.apply(this, arguments);//global調用的overLoad函數,所以this指向global}} } Refactoring((name) => console.log(`${name}`)) Refactoring((name, age) => console.log(`${name},${age}歲`)) Refactoring((name, age, province) => console.log(`${name},${age}歲,${province}人`)) global.overLoad('Kecvin') // Kecvin global.overLoad('Kecvin', 28) // Kecvin,28歲 global.overLoad('Kecvin', 28, '安徽') // Kecvin,28歲,安徽人-
什么叫函數的重載?
根據參數(arguments)數量的不同,返回不同的結果
-
以上哪里用到了閉包?
關于閉包,網上有很多定義,建議看阮一峰老師這篇,雖然有點久遠,但并不過時
學習JavaScript閉包
其實不必咬文嚼字,我一直認為對于閉包最通俗易懂的解釋就是下面的一句話
閉包是個函數,而它「記住了周圍發生了什么」,我們可以通過它,拿到它周圍的東西
換言之,閉包就是將函數內部和函數外部連接起來的一座橋梁
-
閉包在什么時候銷毀 ?
js中內存分為【棧 】和 【堆】,閉包函數主體存儲在【堆】中,它的引用存儲在 【棧】 中,js會定時清理 【堆 】中沒有引用的函數
總結
以上是生活随笔為你收集整理的用闭包实现重载的过程学习闭包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 正则表达式是匹配模式,要么匹配字符,要么
- 下一篇: 今日头条极速版如何解绑支付宝