Function.prototype.bind及其polyfill分析

本文深入探讨JavaScript的Function.prototype.bind方法,详细解释如何绑定this、提前传入参数、结合使用及与call/apply的区别。同时,文章通过实例介绍了bind的polyfill实现,揭示了其内部涉及的闭包和原型链机制,以此巩固JavaScript基础知识。
摘要由CSDN通过智能技术生成

Function.prototype.bind执行会返回一个新的函数,并将this关键字设置为指定的值。并可以在执行该返回的函数之前传入参数。

语法

fun.bind(thisArg[, arg1[, arg2[, ...]]])

  • thisArg:表示返回的函数中this的指向。
  • [, arg1[, arg2[, ...]]]:表明参数是可选的。

使用方法

绑定this

var obj = {
  name: 'real',
  getName: function() {
   
    console.log(this.name)
  }
}
var name = 'window';

obj.getName(); // "real"

var getName = obj.getName;
getName(); // "window";

var getName2 = obj.getName.bind(obj);
getName2(); // "real";

上述getName2方法中this指向了obj

偏函数(提前传入参数)

var log = function log(...args) {
   
  console.log(args);
}
log(1,2,3); // [1, 2, 3]

var log2 = log.bind(null, 0);
log2(1,2,3); // [0, 1, 2, 3]

提前传入函数0。

结合setTimeout

setTimeout(fn, delay)。其中fn中的this默认指向的是全局window/global

function Foo(name){
    this.name = name; };
Foo.prototype.getName = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值