首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NodeJS模块、Chalk的链接语法是如何工作的?

NodeJS模块、Chalk的链接语法是如何工作的?
EN

Stack Overflow用户
提问于 2021-07-15 03:22:04
回答 2查看 213关注 0票数 2

我不明白Chalk (NodeJS模块)语法是如何工作的(这让我很困扰)。我到处寻找答案,但我没有任何运气,很可能不知道我需要寻找什么技术术语。我试过在StackOverflow、“方法链接”、“原型”等网站上查找粉笔相关的问题。我试过查看Chalk的源代码,但仍然找不出我的答案。所涉及的语法是:

代码语言:javascript
运行
复制
// Code snippet from the Chalk NPM Page.
log(chalk.blue.bgRed.bold('Hello world!'));
log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'));

我熟悉方法链接,熟悉在对象中存储函数。我的主要问题是:chalk.blue如何同时成为一个属性和一个函数?

任何帮助都将是非常感谢的。无论这是一个完整的解释,还是朝着正确的方向推进。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-15 04:46:58

粉笔可能使用吸气器策划人来“调用”适当的函数。下面是正在发生的事情的一个简单示例:

代码语言:javascript
运行
复制
let a = function (txt) {
    console.log(a.buffer + txt);
    a.buffer = ''
}

a.buffer = '';

Object.defineProperty(a,'b',{
    get: function(){
        this.buffer += '<B>';
        return this
    }
});

Object.defineProperty(a,'c',{
    get: function(){
        this.buffer += '<C>';
        return this
    }
});

Object.defineProperty(a,'d',{
    get: function(){
        this.buffer += '<D>';
        return this
    }
});

基本上,它只是常规的方法链接,但是使用吸气器使它变得漂亮!另一个技巧是使基对象成为一个函数,而不是一个常规对象,这样您返回的this就可以调用。

现在你可以:

代码语言:javascript
运行
复制
a.b.c.b.d('hello'); // prints <B><C><B><D>hello
票数 3
EN

Stack Overflow用户

发布于 2021-07-15 04:43:53

我的主要问题是:chalk.blue如何同时成为一个属性和一个函数?

在Javascript中,函数是一个对象,因此除了可以作为chalk.blue()调用之外,它还可以具有属性(如chalk.blue.bgRed )。

例如,您可以这样做:

代码语言:javascript
运行
复制
function callMe() {
    console.log("callMe");    
}

callMe.greeting = "hello";

callMe();
console.log(callMe.greeting);

然后,对于不确定链,可以使用getters创建无限的对象链。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68387483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档