首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS 手写: call、apply、bind

# Try it bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。...当使用 bind 在 setTimeout 中创建一个函数(作为回调提供)时,作为 thisArg 传递的任何原始值都将转换为object。...# 描述 bind() 函数会创建一个新的绑定函数(bound function,BF)。...# 示例 # 创建绑定函数 bind() 最简单的用法是创建一个函数,不论怎么调用,这个函数都有同样的 this 值。...只要将这些参数(如果有的话)作为 bind() 的参数写在 this 后面。当绑定函数被调用时,这些参数会被插入到目标函数的参数列表的开始位置,传递给绑定函数的参数会跟在它们后面。

1.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    手写JS函数的call、apply、bind

    之所以要写这篇,是因为曾经面试被要求在白纸上手写bind实现  结果跟代码一样清晰明确,一阵懵逼,没写出来!  下面,撸起袖子就是干!~  把call、apply、bind一条龙都整一遍!...(arg1 + arg2)}const _this = { name: 'YIYING' }// 接受的是一个参数列表;方法立即执行fun.call(_this, 1, 2)// 输出:YIYING3手写实现...+ arg2)}const _this = { name: 'YIYING' }// 参数为数组;方法立即执行fun.ownApply(_this, [1, 2])// 输出:YIYING3参考:前端手写面试题详细解答...bind定义与使用Function.prototype.bind(): developer.mozilla.org/zh-CN/docs/…// Function.prototype.bind()样例function...(_this)newFun(1, 2)// 输出:YIYING3手写实现/** * 自定义bind实现 * @param context 上下文 * @returns {Function} */

    1.2K20

    手写JS函数的call、apply、bind

    之所以要写这篇,是因为曾经面试被要求在白纸上手写bind实现  结果跟代码一样清晰明确,一阵懵逼,没写出来!  下面,撸起袖子就是干!~  把call、apply、bind一条龙都整一遍!...(arg1 + arg2)}const _this = { name: 'YIYING' }// 接受的是一个参数列表;方法立即执行fun.call(_this, 1, 2)// 输出:YIYING3手写实现...arg2)}const _this = { name: 'YIYING' }// 接受的是一个参数列表;方法立即执行fun.ownCall(_this, 1, 2)// 输出:YIYING3参考 前端手写面试题详细解答...定义与使用Function.prototype.bind(): developer.mozilla.org/zh-CN/docs/…// Function.prototype.bind()样例function...(_this)newFun(1, 2)// 输出:YIYING3手写实现/** * 自定义bind实现 * @param context 上下文 * @returns {Function} */

    1K30

    一起手写JS函数的call、apply、bind

    之所以要写这篇,是因为曾经面试被要求在白纸上手写bind实现  结果跟代码一样清晰明确,一阵懵逼,没写出来!  下面,撸起袖子就是干!~  把call、apply、bind一条龙都整一遍!...(arg1 + arg2)}const _this = { name: 'YIYING' }// 接受的是一个参数列表;方法立即执行fun.call(_this, 1, 2)// 输出:YIYING3手写实现...console.log(arg1 + arg2)}const _this = { name: 'YIYING' }// 参数为数组;方法立即执行fun.apply(_this, [1, 2])// 输出:YIYING3手写实现...定义与使用Function.prototype.bind(): developer.mozilla.org/zh-CN/docs/…// Function.prototype.bind()样例function...(_this)newFun(1, 2)// 输出:YIYING3参考 前端进阶面试题详细解答手写实现/** * 自定义bind实现 * @param context 上下文 * @returns

    30230

    手写源码系列(一)——call、apply、bind

    本文首发于知乎专栏——前端面试题汇总,大家可以通过文章底部的阅读原来来访问原文地址 什么是手写源码 平时面试时经常会遇到让手写一个已有方法的实现,其实面试官是想考察你对于JS底层逻辑是否熟悉,经常面试会出的会在下面...: call、apply、bind promise requireJS vue-router Array.prototype.indexOf() 回顾一下call、apply、bind的用法 function...var XYZ = { name: 'XYZ' } var say = sayHelloTo.bind(XYZ) say('ABC') //XYZ say hello to ABC....手写apply方法 Function.prototype.myApply = function(context, args) { // 判断是否是undefined和null if (typeof...bind方法 Function.prototype.myBind = function(context) { // 判断是否是undefined和null if (typeof context ==

    1.7K10
    领券