addMethodChaining
addMethodChaining
向内部注册表添加一个“可链式方法”的名称到实现函数的映射。若名称已存在则发出警告并忽略;若实现不是函数则抛出异常。
核心优势
安全去重与类型校验,避免无意覆盖已有方法;以函数注入的方式为各类节点统一扩展链式 API,而不必修改核心代码。
常见用途
为标量/向量/颜色等节点补充便捷算子(如 .saturate()、.remap() 的语法糖)。
把常用复合运算封装为单个可链式方法,提高可读性。
为项目定制一组领域专用的 TSL 链式扩展。
如何调整
方法名必须唯一;若需替换已有实现,改用新名称或调整底层注册逻辑后再注册。实现函数通常接收被调用节点作为输入(或依赖 this 绑定),具体以运行时实际调用方式为准。
代码示例
1// 1) 正确注册:名称唯一且实现必须是函数
2addMethodChaining( 'saturate', (node) => node.saturate() );
3
4// 2) 重复注册同名:会警告并被忽略
5addMethodChaining( 'saturate', () => {/* ... */} ); // -> console.warn
6
7// 3) 非函数实现:会抛出 Error
8addMethodChaining( 'bad', 123 ); // -> throw Error
9
10// 4) 典型用法说明:注册后由运行时把方法挂到节点实例上(取决于框架内部实现)
11// 例如:color(0xff8844).saturate();