摘要:閉包就是定義在函數中的函數,是函數內外部連接的橋梁,閉包的意義是當前作用域總是能夠訪問外部函數作用域的變量函數是唯一擁有自身作用域的結構,所以閉包的創建依賴于函數閉包的優點也是缺點,可以避免使用全局變量全局變量污染導致應用程序不可預測性,推
閉包就是定義在函數中的函數,是函數內外部連接的橋梁,閉包的意義是:當前作用域總是能夠訪問外部函數作用域的變量;函數是唯一擁有自身作用域的結構,所以閉包的創建依賴于函數 閉包的優點也是缺點,可以避免使用全局變量(全局變量污染導致應用程序不可預測性),推薦使用私有
閉包函數:將所在函數作用域中的變量長期駐留在了內存中。(內存泄露 )
閉包的應用場景:
1. 保護函數內的變量的安全 2. 在內存中維持一個變量 3. 通過閉包返回局部變量 4. 使用全局變量進行累加和 5. 使用局部變量進行累加和 6. 循環里的匿名函數的取值問題
原型繼承
function Father(){}//構造函數 //原型屬性 Father.prototype.name = "李四"; Father.prototype.age = 24; //原型方法 Father.prototype.showName = function(){ return this.name; } Father.prototype.showAge = function(){ return this.age; } function Son(){} //原型鏈繼承 //Son.prototype = Father.prototype; //Son.prototype = new Father(); //遍歷父類的原型 for(var i in Father.prototype){ Son.prototype[i] = Father.prototype[i]; } var son1 = new Son(); alert(son1.showName()); alert(son1.showAge());
經典繼承
//構造函數 function Father(name,age,money){ //實例屬性 this.name = name; this.age = age; this.money = money; //實例方法 this.showName = function(){ return this.name; } this.showAge = function(){ return this.age; } this.showMoney = function(){ return this.money; } } function Son(name,age,money,sex){ //經典繼承、偽裝繼承、冒充繼承(call,apply)只能繼承實例 //Father.apply(this,arguments); //Father.call(this,name,age,money); Father.apply(this,[name,age,money]); this.sex = sex; this.showSex = function(){ return this.sex; } } var son1 = new Son("張三",23,20000,"男"); alert(son1.showName()); alert(son1.showAge()); alert(son1.showMoney()); alert(son1.showSex());
call與aplly的異同:
1. 第一個參數this都一樣,指當前對象 2. 第二個參數不一樣:call的是一個個的參數列表;apply的是一個數組(arguments也可以)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92293.html
摘要:在上面的執行中,只是又返回了一個新的對象,但是并沒有執行新對象里面的屬性對應的匿名函數喔,那就是沒有改變的值啊,所以你繼續也會輸出同樣的結果啊。 關于javascript中的閉包 我GitHub上的菜鳥倉庫地址: 點擊跳轉查看其他相關文章 文章在我的博客上的地址: 點擊跳轉 ? ? ? ? 其實關于閉包的定義,很多種說法,而關于閉包的解釋,更是多不勝數了。很多說得非常復雜,也有很多...
摘要:之前一篇文章我們詳細說明了變量對象,而這里,我們將詳細說明作用域鏈。而的作用域鏈,則同時包含了這三個變量對象,所以的執行上下文可如下表示。下圖展示了閉包的作用域鏈。其中為當前的函數調用棧,為當前正在被執行的函數的作用域鏈,為當前的局部變量。 showImg(https://segmentfault.com/img/remote/1460000008329355);初學JavaScrip...
摘要:之三關于閉包和遞歸開篇這一期本來是打算寫閉包的,但是無意中看到高級程序設計中閉包的前一章就是遞歸。閉包練習題這個板塊會實時補充的關于遞歸其實說到遞歸,主要就是要說這個的用法,其實主要就是調用自己的外圍函數,并且可以傳參。 之三:關于閉包和遞歸 1. 開篇 這一期本來是打算寫閉包的,但是無意中看到《JavaScript高級程序設計》中閉包的前一章就是遞歸。所以拿出來一起講一下吧! 我覺得...
摘要:閉包解決的問題獲取到函數內部的變量讓變量不會隨著函數執行完畢就銷毀而是保存在內存中模擬私有變量閉包產生的問題容易造成內存泄漏,保存的多了,卻沒有釋放的指向問題,在閉包里,指向的是關于閉包的小東西比如注釋部分省了外殼, 閉包概念:能夠訪問另一個函數作用域的變量的函數,來個栗子 showImg(https://segmentfault.com/img/bVbvnmY?w=604&h=245...
閱讀 2337·2019-08-30 15:44
閱讀 1260·2019-08-30 13:01
閱讀 3307·2019-08-30 11:22
閱讀 3093·2019-08-29 15:23
閱讀 1614·2019-08-29 12:22
閱讀 3366·2019-08-26 13:58
閱讀 3439·2019-08-26 12:17
閱讀 3479·2019-08-26 12:16