"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

    精选的常见前端问题集,帮助您踏踏实实走好每一步。

    英文原文请看 30-seconds

    197 引用 • 204 回帖 • 5 关注
  • JavaScript

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

    409 引用 • 987 回帖 • 971 关注
  • 面试

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

    210 引用 • 1145 回帖 • 431 关注
回帖   
请输入回帖内容...