JOI 上调用的多个函数如何工作?

How does multiple function called on JOI work?

Joi.string().aphanum() 等是如何工作的。怎么可能像这样一个接一个地堆叠函数调用,如名称和出生年份所示。这个函数是否都在 class 之类的东西中,如果是这样的话,这怎么可能像这样的函数调用链

const Joi = require('joi'); 
const schema = Joi.object().keys({ 
  name: Joi.string().alphanum().min(3).max(30).required(),
  birthyear: Joi.number().integer().min(1970).max(2013), 
}); 

完全正确。这些方法中的每一个 return 一个新对象(也有那些方法)。这与在正常 Javascript 中做类似 someString.toUpperCase().split("") 的事情非常相似。 这将首先获取字符串,运行 内置 toUpperCase 函数,然后 运行 另一个内置函数 split 在 returned字符串.

您只是在每次调用后堆叠方法和构建新对象。

这是可能的,因为这些方法中的每一个 return 新修改的对象。