You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

什么时候应使用function borrowing,而非定义通用函数实现功能?

我们可以直接根据业务场景和代码设计需求选择写法,优先选择code #1的典型场景如下:

  • 主对象本身就需要默认挂载该方法
    如果car1这类对象本身就是高频使用的实例,原生需要支持调用getSpeed方法,把方法直接定义在car1上最方便,日常调用直接写car1.getSpeed()即可,不需要每次调用都手动绑定this。只有当遇到car2这类临时的、同结构的、不需要长期挂载该方法的对象时,才临时借用car1的方法,不需要额外为少数场景单独定义全局函数。
  • 避免作用域污染
    如果getSpeed这个方法只会在car相关的对象逻辑中用到,不需要对外暴露,code #1的写法不会在全局/模块顶层额外新增一个函数,能有效减少命名冲突的概率,这一点在开发工具库、公共组件时尤为重要。
  • 复用已有内置/第三方方法
    实际开发中大部分函数借用的场景,要借用的方法都不是我们自己定义的,而是语言原生、第三方库已经封装好的成熟方法。比如常见的类数组转数组的写法Array.prototype.slice.call(arguments),本质就是函数借用,我们不可能为了偶尔转一次类数组,就单独复刻一个slice方法作为全局函数,这种场景直接用code #1的思路借用已有方法是成本最低的选择。

如果你的getSpeed是大量不同类型对象都要调用的通用工具方法,需要统一维护逻辑,那选择code #2的写法更合适。

内容的提问来源于stack exchange,提问作者atish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:27:05