FUNCTION

  1. curry
const curry=x=>y=>x+y;
console.log(curry(2)(3)); //5;
  1. destructuring
const {name,...user}={name:'komolei',age:24,sex:'female',family:'one'} //name:komolei ;user:{age:24...}
  1. 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))
  1. 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
// 当写成上面这样的时候,我们想要调用就只能输入参数进行调用。
// 能不能这样调用: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') //想要这样传参数是error的。不是废话嘛?函数是什么?接受参数,return 结果的工具。
// 那怎么传递参数呢?
// p1.add.call({name:'ccc'}) //ccc 
// this在函数中相当于占位符,当调用的时候才会想去替换真正的参数。
// call 传参有限,apply接受数组作为参数。
  1. bind
// bind 返回一个全新的深拷贝过的函数,同时绑定的this为返回的函数的call的this
// mini program 
// var that=this
that.onClick=function(){}
// this.onClick.bind(this) //上下相同。
  1. ramda -fp utility tool
    这几天一直在看function program,简称fp,与平常的面向对象的程序不一样。好吧,我也不知道怎么理解面向对象,就是万物皆对象,将所有的事物抽象成对象,来模拟现实的环境。对应js。就是基于原型链来写对象原型。所有的属性就是this上的字段。所有的方法。都写在propertype上。别的也没有什么想法了。最多es6,class般的语法糖吧。突然发现call,apply,bind的厉害了。动态切换this。

  2. 断言函数

  • 自己的理解:进行判断的函数,(data)=>false|true;
  • 在程序设计中,断言assertion)是一种放在程序中的一阶逻辑(如一个结果为真或是假的逻辑判断式),目的是为了标示与验证程序开发者预期的结果-当程序运行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止运行,并给出错误消息。
  • 跟自己的理解差不多

你可能感兴趣的:(FUNCTION)