美文网首页
mixin, 柯里化, 高阶函数

mixin, 柯里化, 高阶函数

作者: Jason_Shu | 来源:发表于2019-01-17 19:02 被阅读0次

一. mixin

听起来是个很「高大上」的新功能,但是。。。。其实就是为了把「对象a」的所有属性,复制一份到「对象b」中。

function mixin(a, b) {
  for(let key in a) {
    b[key] = a[key];
  }
}

其实就是这么简单的代码。现在ES6语法中有更简单的方式。

Object.assign(b, a);

二. 柯里化

我们说「函数」的时候,一般是「x -> y」的映射,两个参数时,「(x, y) -> z」。

比如:

f(x, y) = x + 2*y;
// 我们固定x,设x=1;
f(1, y) = 1 + 2*y = g(y)

上面这个过程就是「柯里化」。注:不一定只有x,y两个参数,可以是多个参数,然后固定其中一个就可以。

一些应用:

var sum = 0;

function add(x) {
    if(x === undefined) {
        return sum;
    } else {
        console.log('x', x)
        sum += x;
        console.log('sum', sum)
        return add;
    }
}


add(1)(2)(3)();  // 6, 结果在sum中
var result = 0;

function sum(...args) {
    if(args.length === 0) {
        return result;
    } else {
        args.map(v => {
            result += v;
        });
        return sum;
    }

}

sum(1,2,3)  // 6

sum(1)(2)(3)  // 6

sum(1,2)(3)  // 6  都存在result变量中

三. 高阶函数
至少满足以下一个条件,即为「高阶函数」。

  • 接受一个或者多个函数作为输入
  • 输出一个函数

举例:

function add(x, y) {
    return x + y;
}


let f = Function.prototype.bind.call(add, undefined, 1);

// 等价于
// let f = add.bind(undefined, 1);

上述中,bind的参数中其实就有「函数」。

相关文章

  • mixin、柯里化、高阶函数

    mixin 混入 最基本的 mixin 就是简单地将一个对象的属性复制给另一个对象 为了简化 mixin,ES6 ...

  • mixin, 柯里化, 高阶函数

    一. mixin 听起来是个很「高大上」的新功能,但是。。。。其实就是为了把「对象a」的所有属性,复制一份到「对象...

  • mixin、柯里化、高阶函数

    mixin 所谓的mixin就是将一个对象的属性复制给另一个对象 也就是Object.assign 柯里化(cur...

  • React基础篇之高阶函数&函数柯里化

    高阶函数 函数柯里化

  • JS函数关于mixin,柯里化,高阶函数

    mixin: Mixin是JavaScript中用的最普遍的模式,几乎所有流行类库都会有Mixin的实现。 Mix...

  • 初学函数式编程

    高阶函数(Higher-Order Function):高阶函数就是把函数作为参数的函数。 柯里化(Curryin...

  • javascript-柯里化2018-08-08

    柯里化 / 高阶函数 柯里化:将 f(x,y) 变成 f(x=1)(y) 或 f(y=1)x 重点!!!柯里化可以...

  • JS函数柯里化

    在正式聊函数柯里化之前,我这里给大家补充下高阶函数的概念和应用: 1.1、什么是高阶函数?高阶函数英文叫 High...

  • 柯里化、高阶函数、

    柯里化 高阶函数在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:**接受一个或多个函数作为输入:for...

  • 柯里化,高阶函数

    柯里化Currying: 柯里化:多参数函数变成接受单一参数并将【接受余下参数且返回结果的】新函数返回的技术。 柯...

网友评论

      本文标题:mixin, 柯里化, 高阶函数

      本文链接:https://www.haomeiwen.com/subject/ccxwdqtx.html