尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

由此Prototype开发者搞了一个非常有名的函数出来,bind!以下是它的一个最简单的版本:

发布时间:2026/9/16 19:43:15

资讯中心
01
ARTICLE

由此Prototype开发者搞了一个非常有名的函数出来,bind!以下是它的一个最简单的版本:

由此Prototype开发者搞了一个非常有名的函数出来,bind!以下是它的一个最简单的版本:
varbind function(context, fn) {returnfunction() {returnfn.apply(context, arguments);}}运行代码不过为了面对更复杂的情况建议用以下版本。functionbind(context,fn) {varargs Array.prototype.slice.call(arguments, 2);returnargs.length 0 ?function() {returnfn.apply(context, arguments);} :function() {returnfn.apply(context, args.concat.apply(args, arguments));};};它还有一个孪生兄弟叫bindAsEventListener 绑定事件对象没什么好说的。varbindAsEventListener function(context, fn) {returnfunction(e) {returnfn.call(context, (e|| window.event));}}Prototype的版本Function.prototype.bind function() {if(arguments.length 2 (typeofarguments[0]undefined))returnthis;var_slice Array.prototype.slicevar__method this, args _slice.call(arguments,0), context args.shift();returnfunction() {return__method.apply(context, args.concat(_slice.call(arguments,0)));}}运行代码bind函数是如此有用google早早已把它加入到Function的原型中了此外还有inheritsmixin与partial。运行代码有绑定就有反绑定或者叫剥离更好例如原生对象的泛化方法我们是无法通过遍历取出它们的。for(variinArray){alert(i : Array[i])}for(variinArray.prototype){alert(i : Array.prototype[i])}运行代码要取出它们就需要这个东西var_slice Array.prototype.slice;functionunbind(fn) {//第一步取得泛化方法returnfunction(context) {//第二部用对应原生对象去重新调用returnfn.apply(context, _slice.call(arguments, 1));};};
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。