gpt4 book ai didi

javascript - 如何在不执行的情况下使函数可链接?像 `obj.fn.fn` 而不是 `obj.fn().fn()`

转载 作者:搜寻专家 更新时间:2023-11-01 04:36:24 28 4
gpt4 key购买 nike

我在一个对象中有两个函数

var obj = {};
obj.fn1 = function(){ console.log('obj.fn1'); return this; };
obj.fn2 = function(){ console.log('obj.fn2'); return this; };

我希望能够做到

obj.fn1.fn2()
obj.fn2.fn1()

如何做到这一点?

编辑:fn1fn2 可以是函数或属性访问器,我不在乎,只要它们做事即可。 p>

我在很多图书馆都见过它,比如 chalk color.red.bold('字符串')

最佳答案

如果 fn1fn2obj 都引用了这两个函数,您就可以这样做。 Object.assign (ES6) 在这里提供帮助:

var base = {
fn1: function fn1() { console.log('fn1'); return this; },
fn2: function fn2() { console.log('fn2'); return this; }
}

Object.assign(base.fn1, base);
Object.assign(base.fn2, base);
var obj = Object.assign({}, base);

obj.fn1();
obj.fn1.fn2();
obj.fn2();
obj.fn1.fn2.fn1.fn1();

babel.js repl

我希望这就是您的库示例的工作方式。

如果Object.assign不可用,您可以使用 polyfill或常见的替代方案,如 _.assign来自 lodash。

关于javascript - 如何在不执行的情况下使函数可链接?像 `obj.fn.fn` 而不是 `obj.fn().fn()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30076224/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com