题解 | #Function.bind#

Function.bind

https://www.nowcoder.com/practice/ecad0164931847f78c55278cee56e544

首先我们了解一下 bind 方法的原理:

Function.bin()

在 JavaScript 中,函数的 bind 方法是用于创建一个新函数,并且指定这个新函数中的 this 值,同时可以预先传入部分参数。

语法

function.bind(thisArg, arg1, arg2, ...)

参数说明

  • thisArg: 在新函数运行时被指定的 this 值。
  • arg1, arg2, ...: 预先传入到新函数的参数列表。

返回值

bind 方法返回一个新的函数,这个函数与调用 bind 方法的原始函数相同,但有以下特性:

  • this 值被永久设置为 bind 方法的第一个参数。
  • 当新函数被调用时,提供的参数会按照 bind 方法传递的参数列表顺序,加在新函数调用时的参数列表之前。

示例

let person = {
  firstName: 'John',
  lastName: 'Doe',
  say: function() {
    console.log('Hello, ' + this.firstName + ' ' + this.lastName);
  }
};

// 创建一个新函数 boundSay,它的 this 永久指向 person
let boundSay = person.say.bind(person);

boundSay(); // 输出: Hello, John Doe

// 创建一个新函数 boundGreet,它的 this 永久指向 person,并预先传入参数
function greet(greeting) {
  console.log(greeting + ', ' + this.firstName + ' ' + this.lastName);
}

let boundGreet = greet.bind(person, 'Hi');

boundGreet(); // 输出: Hi, John Doe

应用场景

  • 固定函数的上下文: 当需要确保函数在调用时的 this 值始终指向特定对象时,可以使用 bind 方法。
  • 部分应用参数: 可以预先传递一部分参数,使得函数在调用时只需提供剩余的参数。
  • 事件处理程序: 在事件监听中,经常使用 bind 来确保事件处理函数中的 this 指向正确的对象。

总结来说,bind 方法是 JavaScript 中用于永久设置函数的 this 值,并且可以预先传递参数的重要工具。

题解

首先让 originalFunc 保存原始函数的引用,然后返回一个新的函数,这个函数会在调用时将绑定的 this 值和参数传递给原始函数,最后使用使用 apply 方法调用原始函数,设置 thisArg 为绑定的 this 值,参数为 args 和 innerArgs 的合并数组。

Function.prototype._bind = function(target, ...arguments1) {
                const originalFunc = this
                return function (...args){
                    return originalFunc.apply(target,arguments1.concat(args))
                }
            }

apply函数:

在 JavaScript 中,applyFunction 原型上的一个方法,用于调用一个函数,并且可以设置函数体内 this 对象的值,并传递一个数组(或类数组对象)作为函数的参数。

语法

func.apply(thisArg, [argsArray])

参数说明

  • thisArg: 可选参数,函数执行时的 this 值。如果 thisArgnullundefined,则在调用的函数里使用全局对象(在浏览器中是 window)。
  • argsArray: 一个数组或者类数组对象,其中的元素作为参数传递给调用的函数。如果 argsArraynullundefined,则不传入任何参数。

返回值

调用函数的返回值,如果使用 new 调用构造函数,则返回新对象的实例。

手撕题题库 文章被收录于专栏

这是我开卷的第一步!!

全部评论

相关推荐

避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
04-10 11:56
如皋中学 Java
高斯林的信徒:双c9能简历挂的?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务