"2019-01-08 题目 /** 请按要求实现 `bind` 函数:以下代码执行时,需返回正确结果且运行过程中无异常 */ let example = function () { console.log(this) } const boundExample = bind(example, { a: true }) b .."

实现一个功能和 `Function.prototype.bind` 相同的函数

2019-01-08

题目

/**
  请按要求实现 `bind` 函数:以下代码执行时,需返回正确结果且运行过程中无异常
*/
let example = function () {
  console.log(this)
}
const boundExample = bind(example, { a: true })
boundExample.call({ b: true }) // {a: true}

回答

const bind = (fn, context) => () => fn.apply(context)

加分回答

const bind = (fn, context) => (...args) => fn.apply(context, args)
// setTimeout
class LateBloomer {
    constructor() {
        this.petalCount = Math.ceil(Math.random() * 12) + 1;
    }
    declare() {
        console.log('I am a beautiful flower with' + this.petalCount + 'petals!');
    }
    bloom() {
        window.setTimeout(this.declare.bind(this), 1000);
    }
}
var flower = new LateBloomer();
flower.bloom();
// 预设初始参数
const list = function () {
    return Array.prototype.slice.call(arguments);
}
// 创建一个函数,它拥有预设参数列表。
const leadingThirtysevenList = list.bind(null, 37);
console.log(leadingThirtysevenList()); // [37]
console.log(leadingThirtysevenList(1, 2, 3)); // [37, 1, 2, 3]

返回总目录

每天 30 秒

  • 30Seconds

    前端面试 30s 系列问答翻译:

    英文原文请看 30-seconds-of-interviews

    97 引用 • 176 回帖 • 5 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    303 引用 • 966 回帖 • 1013 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    200 引用 • 1136 回帖 • 481 关注
感谢    关注    收藏    赞同    反对    举报    分享
回帖    
请输入回帖内容...