尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

由此Prototype开发者搞了一个非常有名的函数出来,bind!以下是它的一个最简单的版本:
📅 发布时间:2026/7/6 0:21:47

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.slice

var__method =this, args = _slice.call(arguments,0), context = args.shift();

returnfunction() {

return__method.apply(context, args.concat(_slice.call(arguments,0)));

}

}

运行代码

bind函数是如此有用,google早早已把它加入到Function的原型中了(此外还有inherits,mixin与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));

};

};

相关新闻

  • PyTorch DataLoader 高级配置:5个核心参数详解与多进程加载避坑指南
  • POSIX 1003.1 标准解析:从 fork/exec 到 72 个系统调用的可移植性实践
  • GHelper终极指南:华硕笔记本性能控制神器完全解析

最新新闻

  • Redis 突然变慢了如何排查并解决?
  • 144、结构化输出:JSON Mode、Function Calling、Grammars 三种方案对比
  • VirtualBox+Kali+Genymotion:搭建移动安全渗透测试实验环境
  • 2026最新7款AI编程工具实测 基础版免费深度对比
  • 【光学】高斯光束在F-P干涉仪中的传输模拟附matlab代码
  • 用Ai开发微信小程序,没想到那么简单(一)

日新闻

  • AI智能体安全防护框架AgentGuard:从原理到实战部署指南
  • KMX63与PIC18F26K40硬件组合及低功耗设计实践
  • 基于YOLO13改进的门体检测模型:C3k2模块与PoolingFormer技术解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号