總結:
1.匿名函式使用
(function(global){})(window) //封裝外掛程式,避免全域性變數
(function(global,$){})()
複製**
擴充套件:$(function())
jqeruy中的寫法等於js中window.onload = funtion()
2.es6中的class使用
class slide
init()}
var slide = new slide(opts); //例項化
複製**
2.1
utils.js中的var utils 使用es6的語法export default utils
slide_2.js中呼叫import utils from "./utils.js"
ps:原生的瀏覽器是不知道import的,chrome 64版本後支援 不過需要使用時,如:新增type="module"
3.嚴格模式的使用"use strict"
4.生命週期寫法具體實現:
(function(global,utils)
//只要可能操作的節點
slide.eles =
//陣列物件生成dom樹
slide.getdom =
]}]}
} //通過原型使用
slide.prototype =
option : () => ,
drawhtml : () => ,
bindevent : function(e),
initializeelements : function
() }}}
global.slide = slide;//window全域性變數
})(window,utils)
複製**
生命週期寫法的一種思考:通過class 中 oop 寫法(slide_1.html) 和新的寫法 (slide_2.html)進行對比 明顯可擴充套件性和可讀性更加高,靈活性也更好一點,不過對於小的外掛程式或者輪子寫起來也相對麻煩
這次寫slide其實就複雜化了4.1 陣列物件生成無限深度節點
在utils.js可以看到domtree的使用
//物件型別
const data = [,,
]}]},
]}]}
]function drawelement(domobject)
drawelement.prototype = ,
/*** 繪製dom物件生成真實碎片節點
* @param recursiveobj - 遞迴dom物件
* @param parentnode - 父節點物件element.
* @param count - 計數,用於計算paddingleft
*/render(recursiveobj, parentnode, count)
})},
buildnode(item, index) ,
setclassprop(element, item, index)
}
複製**
老客新客的新寫法
今天檢查老客戶寫法的誤差,耗費無數心血,終於解決了。原來的方法 取註冊時間 完單時間所在的星期一,but結果總是有三萬左右誤差 新方法 取老客戶註冊時間所在周 完單時間所在周 新客戶 註冊時間所在周 完單時間所在周 select b.week1 as week count distinct b.pa...
Masonry的寫法總結
masonry使用鏈式方式程式設計,有定義一些巨集來方便開發,如下 define offset mas offset va args define equalto mas equalto va args define greaterthanorequalto mas greaterthanorequ...
遞迴寫法總結
遞迴是演算法中的一種很重要思想。好的遞迴程式邏輯清楚,簡潔,有時候時間上也非常高效 此外鍊錶 二叉樹等結構用遞迴演算法一般都有鮮明優勢。往往遞迴問題口頭說起來感覺十分清晰順暢 而用 實現起來確總感覺層巒疊嶂,不知從何下手,思路也越來越混亂不堪。最近在解決一些演算法相關的小問題時候,經常需要用到遞迴,...