前端笔记之手写bind
前言
大家好 我是歌谣 上节课我们已经说过了关于手写apply和手写call的讲解 这节课我们继续来进行手写bind的讲解
bind演示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>手写bind.html</title> </head> <body> <script> var geyao = { name: "geyao", show() { console.log(this, "this") console.log(` 我是${this.name}`) } } var fangfang = { name: "fangfang" } let fn=geyao.show.bind(fangfang) fn() </script> </body> </html>
运行结果
分析
核心的功能就是第一会改变this的指向 第二函数不会立刻执行
代码
`` var geyao = { name: "geyao", show() { console.log(this, "this") console.log(
我是${this.name}`) } } var fangfang = { name: "fangfang" } Function.prototype.myBind = function (content, args) {
let fn = Symbol('geyao') fn = this return function Fn() { // 这里arguments的作用是拿到Fn中传入的参数 return fn.call(content, args) } } let fn = geyao.show.myBind(fangfang) fn()
```
运行结果
思考
这里还需要对new bind进行一个实现 不是上述所说的这么简单
function geyao() { this.fangfang = 'fangfang'; } var geyaoFoo = geyao.bind(); var obj = new geyaoFoo(); console.log(obj.fangfang);
运行结果
最终代码
```bash
手写bind2.html
```
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南