首页 > 解决方案 > 返回函数的返回对象

问题描述

我需要用 JavaScript 编写一个函数,它接受一个数字并返回一个返回可链接函数的对象(不使用 OOP)。

例子:

func(3).not().not().equals(4)

将输出false.

和:

func(5).equals(5)

会输出:true

这是我写的代码:

const func = (obj) => { 
  const obj2 = {
    not: () => {
      return !obj
    },
    equals: (num) => {
     return obj === num
   }
 }
  return obj2 
}

当我调用func(3).not()or时它可以工作func(5).equals(5),但不允许我链接函数,因此调用会func(5).not().equals(5)返回一个错误,指出这不是一个函数。

我在这里没有看到什么?

标签: javascriptobjectfunctional-programming

解决方案


要使用包装新值的相同方法返回另一个对象,只需func再次调用:

const func = (obj) => { 
  const obj2 = {
    not: () => {
      return func(!obj)
//    ^^^^^^^^^^^^^^^^^
    },
    equals: (num) => {
      return obj === num
    }
  }
  return obj2 
}
console.log(func(3).not().not().equals(4))
console.log(func(5).equals(5))
console.log(func(3).not())


推荐阅读