- curry
const curry=x=>y=>x+y;
console.log(curry(2)(3)); //5;
- destructuring
const {name,...user}={name:'komolei',age:24,sex:'female',family:'one'} //name:komolei ;user:{age:24...}
- high order function
[].sort.call([2,1,3,4],(p,n)=>p-n) // 1,2,3,4
[].map.call([2,4,5],item=>item*2) //4,8,10
[].filter.call([2,4,5],item=>item>2) // 4,5
[].reduce.call([2,4,5],(p,n)=>p+=n); // 11
[].forEach.call([2,4,5],item=>console.log(item*2))
- call & apply
var p={
name:'komolei',
add:function(p){
console.log('name',p.name)},
age:function(p){
console.log('age',p.age)}}
p.name // komolei
p.add({name:'ddd'}) // name ddd
// 當(dāng)寫成上面這樣的時候,我們想要調(diào)用就只能輸入?yún)?shù)進(jìn)行調(diào)用。
// 能不能這樣調(diào)用:p.add()
// 可以,使用this
var p1={
name:'komolei',
add:function(){
console.log('name',this.name)},
age:function(){
console.log('age',this.age)}}
// p1.add() //name komolei
// p1.add('xxx') //想要這樣傳參數(shù)是error的。不是廢話嘛?函數(shù)是什么?接受參數(shù),return 結(jié)果的工具。
// 那怎么傳遞參數(shù)呢?
// p1.add.call({name:'ccc'}) //ccc
// this在函數(shù)中相當(dāng)于占位符,當(dāng)調(diào)用的時候才會想去替換真正的參數(shù)。
// call 傳參有限,apply接受數(shù)組作為參數(shù)。
- bind
// bind 返回一個全新的深拷貝過的函數(shù),同時綁定的this為返回的函數(shù)的call的this
// mini program
// var that=this
that.onClick=function(){}
// this.onClick.bind(this) //上下相同。
ramda -fp utility tool
這幾天一直在看function program,簡稱fp,與平常的面向?qū)ο蟮某绦虿灰粯印:冒?,我也不知道怎么理解面向?qū)ο螅褪侨f物皆對象,將所有的事物抽象成對象,來模擬現(xiàn)實的環(huán)境。對應(yīng)js。就是基于原型鏈來寫對象原型。所有的屬性就是this上的字段。所有的方法。都寫在propertype上。別的也沒有什么想法了。最多es6,class般的語法糖吧。突然發(fā)現(xiàn)call,apply,bind的厲害了。動態(tài)切換this。斷言函數(shù)