-
這個方法特別實用查看全部
-
高大上的設計模式查看全部
-
設計模式概念查看全部
-
模板方法。 只需要繼承實現。 抽象父類,具體實現的子類。 prototype 原型。console控制臺。 分離出共同點。分離出來抽象父類。統一修改按住控制+D. 通過原型鏈訪問的。強制子類要重寫。 可以在父類方法中拋出錯誤。如果沒有重寫,就會是父類的錯誤。 鉤子方法。查看全部
-
將父類的實例化對象直接賦值給子類的原型對象,如果父類的屬性龐大會影響性能,所以構造一個函數,用于只繼承父類的原型方法查看全部
-
設計模式定義查看全部
-
模板方法。 只需要繼承實現。 抽象父類,具體實現的子類。 prototype 原型。console控制臺。 分離出共同點。分離出來抽象父類。統一修改按住控制+D. 通過原型鏈訪問的。強制子類要重寫。 可以在父類方法中拋出錯誤。如果沒有重寫,就會是父類的錯誤。 鉤子方法。查看全部
-
當封裝一個函數時,你是在復用代碼;而當使用一個設計模式時,你是在復用他人的經驗。查看全部
-
* 代碼中的問題: * 1.含有過多的全局變量num,$rating,$item等,多人共同開發時容易造成變量同名從而被覆蓋產生bug(模擬命名空間或者用閉包解決) * 2.事件綁定的寫法為每顆星星都綁定了事件,當星星數過多時造成浪費 (事件委托(事件代理):根據冒泡的特性,在父容器上綁定一次事件即可,通過判斷在父元素中判斷是不是相應的子元素觸發了相應的事件) * 3.不能實現代碼復用,多個評分要通過復制代碼修改后使用。查看全部
-
整理下js的思路: 寫好主功能函數,就是點亮這個函數-->為元素一一綁定事件 為元素綁定事件有個小細節:mouseout事件綁定在ul這個父容器上,而不是li單個項目上。 完善: 全局變量重名或者沖突,解決方法:自我匿名函數,就是用一個閉包 不用為每個li都綁定事件,只需要為他們父容器綁定即可,利用事件的冒泡處理 $rating.on('mouseover','.rating-item',function(){},子元素事件委托給父元素處理 為了實現功能復用,我們可以把它寫成一個模塊,可以用函數來實現,利用函數帶參實現不同需求; 命名為init函數,怎么使用呢?就可以用return返回來使用,而return返回對象的話就可以這樣使用:rating.init("#el",num) 這里有個小細節:功能函數例如lightOn因為只需要申明一次就可以把它放到init函數外面。查看全部
-
* 代碼中的問題: * 1.含有過多的全局變量num,$rating,$item等,多人共同開發時容易造成變量同名從而被覆蓋產生bug(模擬命名空間或者用閉包解決) * 2.事件綁定的寫法為每顆星星都綁定了事件,當星星數過多時造成浪費 (事件委托(事件代理):根據冒泡的特性,在父容器上綁定一次事件即可,通過判斷在父元素中判斷是不是相應的子元素觸發了相應的事件) * 3.不能實現代碼復用,多個評分要通過復制代碼修改后使用。查看全部
-
設計模式查看全部
-
設計模式包含的內容查看全部
-
設計模式就是指經驗的總結,利用總結來解決現在存在的問題查看全部
-
js中每個函數都有兩個非繼承而來的方法:apply()和call(), 兩個方法都接收兩個參數, 其中第一個參數都是函數的作用域(用來改變(擴充)原函數的作用域), 使原函數中的this指向新的作用域中的變量對象; 第二個參數的唯一區別是, apply方法傳入參數數組, call方法直接傳遞每個參數。所以, 對此作出的解釋大概為(見解不夠深刻, 可能會有小問題歡迎指出): 原來self.opts中select函數中的this是指向函數的調用者(this一般指向函數調用者), 也就是self即LightEntire的實例化對象, 所以控制臺輸出了這個對象, 后因為使用了call方法, 傳入了this作為第一個參數, 注意這里的this是指向每個".rating-item"也就每個星星, 然后select函數中this的指向發生了變化, 重新指向了".rating-item"。 $(".rating-item").on("mouseover", function(){ console.log(this); // 這里相當于新的函數作用域, this指向$(".rating-item") }); ——概念請參考《JavaScript高級程序設計》-第三版第四章和第五章5.5.5查看全部
舉報
0/150
提交
取消