JavaScript 无侵入式 bind 函数实现与动态作用域绑定
作者:代码拾荒时间:2026-10-24 13:24:30浏览:110
本文介绍一种不扩展原生对象的 JavaScript bind 函数实现方案。通过保存原函数引用并利用 apply 方法,该方法允许指定新的作用域(context)并预设部分参数。代码展示了如何合并预置参数与调用时传入的参数,从而实现灵活的作用域绑定与参数偏应用。
无侵入式 bind 函数设计思路
关于动态 this 与动态绑定的具体结论,可参考《javascript下动态this与动态绑定实例代码》。本文重点在于设计一个不侵入原生对象的绑定函数。
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
遵循不扩展原生对象的原则,实现了此 bind 函数(此处 dom 作为作用域)。其用法与 Prototype 框架中的 bind 方法类似。
代码如下:
bind 函数核心代码实现dom.bind = function(fn,context){
// 第二个参数若偏好,可命名为 thisObject 或 scope,
// 其本质均为指定一个新的作用域对象。
if (arguments.length < 2 && context===undefined) return fn;
var method = fn,
slice = Array.prototype.slice,
args = slice.call(arguments, 2) ;
return function(){// 此处传入原 fn 所需的参数
var array = slice.call(arguments, 0);
method.apply(context,args.concat(array))
} 函数用法与参数说明
使用示例:第一个参数指定需绑定作用域的函数,第二个参数指定 window 或其他对象,后续参数为任意预设值。
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
另一个应用示例:
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
作者最新文章
JavaScript异步发送HTTP请求时怎么优雅地处理错误
2026-11-05 17:10:44
5款主流JS在线运行工具对比:CodePen、JSFiddle与StackBlitz怎么选
2026-11-05 17:04:04
JavaScript入门书籍避坑:这些书不适合初学者
2026-11-05 16:31:15
JS使用Math.round实现保留两位小数的原理与代码
2026-11-05 15:35:55
JavaScript 原生 Date 对象怎么实现日期加减
2026-11-05 14:30:00
相关标签:
