一、管道操作符(Pipeline Operator |>
)(Stage 2 → Stage 3 推进中)
-
函数式编程风格的链式调用,简化嵌套函数操作。
// 旧写法(嵌套难以阅读) const result = capitalize(filterEven(square([1, 2, 3]))); // 新写法(线性流程) const result = [1, 2, 3] |> square(%) |> filterEven(%) |> capitalize(%);
优势:
-
替代
lodash
的链式调用,原生支持数据流水线处理。
二、Array.prototype.unique()
(数组去重)(Stage 1)
-
原生支持数组快速去重(类似
Set
但返回数组)。const arr = [1, 2, 2, 3]; arr.unique(); // [1, 2, 3]
对比现有方案:
-
比
[...new Set(arr)]
更语义化。
三、Promise.try()
(同步/异步统一错误处理)(Stage 3)
-
统一处理同步和异步错误的起点。
// 旧写法需区分同步/异步 try { const data = fetchData(); // 可能同步或异步 } catch (err) { console.error(err); } // 新写法 Promise.try(() => fetchData()) .catch(err => console.error(err));
适用场景:
-
混合同步/异步代码的错误捕获。
四、模式匹配(Pattern Matching)(Stage 1)
-
类似
switch
的增强版,支持复杂条件匹配。const response = await fetchAPI(); match (response.status) { case 200 -> console.log("成功"); case 404 -> console.log("未找到"); case 500..599 -> console.log("服务器错误"); else -> console.log("未知状态"); }
优势:
-
替代多层
if-else
或switch
,更简洁。
五、Object.prototype.pick()
/ omit()
(Stage 1)
-
直接从对象中选取或排除属性。
const user = { name: "Alice", age: 30, password: "123" }; // 选取属性 user.pick(["name", "age"]); // { name: "Alice", age: 30 } // 排除属性 user.omit(["password"]); // { name: "Alice", age: 30 }
对比 Lodash:
-
减少对工具库的依赖。
六、数字范围(Number Ranges)(Stage 2)
-
简化数字范围的生成和校验。
// 生成范围 1..10; // [1, 2, 3, ..., 10] // 校验范围 42 in 1..100; // true
适用场景:
-
数据验证、循环初始化。
七、可观察对象(Observable)(Stage 1)
-
原生支持响应式数据流(类似 RxJS)。
const clicks = Observable.fromEvent(button, 'click'); clicks.subscribe(() => console.log("Clicked!"));
意义:
-
为前端响应式编程提供语言级支持。
注:如有缺失,请联系作者或在下方评论,我尽量在第一时间补充上去!!!