使一个函数返回子函数,但默认返回另一个函数(Node.js / JS)

去搞清楚

我有一个函数,当前返回包含子函数的对象。

let myFunction = (data) => {
  return {
    a: function(){
      return a()
    },
    b: function(){
      return b()
    }
  }
}

let a = () => {
  return 'a'
}

let b = () => {
  return 'b'
}

console.log(myFunction().a())
//=> 'a'

console.log(myFunction())

完美运作。但是,当我运行时myFunction(),它将返回{ a: [Function: a], b: [Function: b] }我想myFunction()返回另一个函数alphabet,该函数返回字母字符串。

示例(显然不起作用):

let myFunction = (data) => {
  // CHANGED BELOW
  return alphabet() && {
    a: function(){
      return a()
    },
    b: function(){
      return b()
    }
  }
}

let a = () => {
  return 'a'
}

let b = () => {
  return 'b'
}

let alphabet = () => {
  return 'abcdefghijklmnopqrstuvwxyz'
}

console.log(myFunction().a())
//=> 'a'

console.log(myFunction())
//=> {a: [function a], b: [function b]}

我如何才能使该功能默认为返回一个功能,同时又具有子功能?

帮助表示赞赏。谢谢

TJ人群

我想您是说您想myFunction返回一个函数,该函数返回字母,但上面也有ab函数。

您可以这样做,因为函数是对象,并且对象可以具有任意属性。函数和属性没有文字语法,但是您可以通过赋值或使用轻松添加它们Object.assign

let myFunction = (data) => Object.assign(
    () => "abcdefghijklmnopqrstuvwxyz",
    {a, b}
);
    
let a = () => {
    return "a";
};

let b = () => {
    return "b";
};

console.log(myFunction().a());
//=> "a"

console.log(myFunction()());
//                      ^^−−−−−−−−−−− Note the extra ()
//=> "abcdefghijklmnopqrstuvwxyz"

为了清楚起见,以下是更详细的版本myFunction

let myFunction = (data) => {
    const alphabet = () => "abcdefghijklmnopqrstuvwxyz";
    alphabet.a = a;
    alphabet.b = b;
    return alphabet;
);

上面的原始版本做同样的事情(除了这个更冗长的版本给出alphabet了一个名字),但是这个版本可能更容易阅读。

或者,您也可以使用这样的名称:

let myFunction = (data) => {
    const alphabet = () => "abcdefghijklmnopqrstuvwxyz";
    return Object.assign(alphabet, {a, b});
);

在评论中,您说过:

我想在没有多余()的情况下调用myFunction()并获取完整的字母

这基本上是不可能的。您可以靠近,但实际上不能到达那里。

您可以得到的“关闭”是您可以返回一个String 对象而不是一个字符串原语:

let myFunction = (data) => Object.assign(
    new String("abcdefghijklmnopqrstuvwxyz"),
    {a, b}
);
    
let a = () => {
    return "a";
};

let b = () => {
    return "b";
};

console.log(myFunction().a());
//=> "a"

console.log(myFunction());
//=> "abcdefghijklmnopqrstuvwxyz"

String对象是对象,而不仅仅是字符串基元,这意味着它们可以具有其他属性,例如ab但是,无论何时将它们强制转换为原始形式,它们都会回到字符串原始形式。例如,如果您+在它们上使用同样,String对象具有所有String方法(它们从相同的位置字符串原语获取),而返回字符串的方法则返回字符串原语,因此toLowerCase对结果进行调用(例如)还可以提供字符串原语。这里有两个例子+toLowerCase()

let myFunction = (data) => Object.assign(
    new String("abcdefghijklmnopqrstuvwxyz"),
    {a, b}
);
    
let a = () => {
    return "a";
};

let b = () => {
    return "b";
};

console.log(myFunction().a());
//=> "a"

console.log("alphabet: " + myFunction());
//=> "abcdefghijklmnopqrstuvwxyz"

console.log(myFunction().toLowerCase());
//=> "abcdefghijklmnopqrstuvwxyz"

我不建议这样做。同样,String对象是对象,而不是通常的字符串,在某些时候可能会在程序中引起一些麻烦。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使一个函数返回子函数,但默认返回另一个函数(Node.js / JS)

来自分类Dev

使用Node.JS从一个函数向另一个函数返回值

来自分类Dev

JS:您在哪里实例化返回另一个函数的函数?

来自分类Dev

如何从另一个函数调用一个函数-Node JS

来自分类Dev

在另一个函数中调用JS函数

来自分类Dev

在另一个函数之后使用js函数

来自分类Dev

在另一个函数之后使用js函数

来自分类Dev

脱离一个JS函数以调用另一个JS函数

来自分类Dev

脱离一个JS函数以调用另一个JS函数

来自分类常见问题

Node.js-从另一个Lambda函数中调用AWS.Lambda函数

来自分类Dev

如何从Node.js函数获取返回值,该函数包含来自另一个应用程序的数据库查询

来自分类Dev

如何传递一个函数作为 Node.js 中另一个函数的回调?

来自分类Dev

将变量从一个 JS 函数传递到另一个函数

来自分类Dev

如何从JS函数返回值并将其发送到Node js中的另一个JS脚本?

来自分类Dev

从另一个文件覆盖JS函数

来自分类Dev

JS->从另一个函数访问变量

来自分类Dev

覆盖另一个函数JS中的变量

来自分类Dev

无法从另一个 JS 文件调用函数

来自分类Dev

JS在一个函数中返回多个Promise

来自分类Dev

将值从Firebase JS回调方法(DAL)返回到另一个函数(控制器)

来自分类Dev

如何在对象文字中使用另一个JS函数的返回值

来自分类Dev

如何将Js函数数组传递给另一个Js函数?

来自分类Dev

AWS Lambda调用不调用另一个Lambda函数-Node.js

来自分类Dev

Node.js-从另一个函数/对象发出事件

来自分类Dev

使用node.js在javascript中的另一个文件中调用函数

来自分类Dev

如何从一个JS函数向另一个JS函数发送JSON数组数据?

来自分类Dev

如何从一个js文件调用函数到另一个

来自分类Dev

模拟模块,它在node.js中返回一个函数

来自分类Dev

模拟模块,它在node.js中返回一个函数

Related 相关文章

  1. 1

    使一个函数返回子函数,但默认返回另一个函数(Node.js / JS)

  2. 2

    使用Node.JS从一个函数向另一个函数返回值

  3. 3

    JS:您在哪里实例化返回另一个函数的函数?

  4. 4

    如何从另一个函数调用一个函数-Node JS

  5. 5

    在另一个函数中调用JS函数

  6. 6

    在另一个函数之后使用js函数

  7. 7

    在另一个函数之后使用js函数

  8. 8

    脱离一个JS函数以调用另一个JS函数

  9. 9

    脱离一个JS函数以调用另一个JS函数

  10. 10

    Node.js-从另一个Lambda函数中调用AWS.Lambda函数

  11. 11

    如何从Node.js函数获取返回值,该函数包含来自另一个应用程序的数据库查询

  12. 12

    如何传递一个函数作为 Node.js 中另一个函数的回调?

  13. 13

    将变量从一个 JS 函数传递到另一个函数

  14. 14

    如何从JS函数返回值并将其发送到Node js中的另一个JS脚本?

  15. 15

    从另一个文件覆盖JS函数

  16. 16

    JS->从另一个函数访问变量

  17. 17

    覆盖另一个函数JS中的变量

  18. 18

    无法从另一个 JS 文件调用函数

  19. 19

    JS在一个函数中返回多个Promise

  20. 20

    将值从Firebase JS回调方法(DAL)返回到另一个函数(控制器)

  21. 21

    如何在对象文字中使用另一个JS函数的返回值

  22. 22

    如何将Js函数数组传递给另一个Js函数?

  23. 23

    AWS Lambda调用不调用另一个Lambda函数-Node.js

  24. 24

    Node.js-从另一个函数/对象发出事件

  25. 25

    使用node.js在javascript中的另一个文件中调用函数

  26. 26

    如何从一个JS函数向另一个JS函数发送JSON数组数据?

  27. 27

    如何从一个js文件调用函数到另一个

  28. 28

    模拟模块,它在node.js中返回一个函数

  29. 29

    模拟模块,它在node.js中返回一个函数

热门标签

归档