手写apply

简介: 手写apply

导语

apply使用




编辑

代码部分

Function.prototype.myApply = function (context, args) {
        //这里默认不传就是给window,也可以用es6给参数设置默认参数
        context = context || window
        args = args ? args : []
        //给context新增一个独一无二的属性以免覆盖原有属性
        const key = Symbol()
        context[key] = this
        //通过隐式绑定的方式调用函数
        const result = context[key](...args)
        //删除添加的属性
        delete context[key]
        //返回函数调用的返回值
        return result
      }
      var name = 'geyao'
      var fangfang = {
        name: 'fangfang',
        fang: function () {
          console.log(this.name)
        },
        fun: function () {
                    console.log(this,"this")
          setTimeout(
            function () {
              this.fang()
            }.myApply(this),
            100
          )
        },
      }
      fangfang.fun() //fangfang
相关文章
|
4月前
03 # 手写 call
03 # 手写 call
31 0
|
4月前
|
索引
11 # 手写 reduce 方法
11 # 手写 reduce 方法
62 0
|
1月前
|
JavaScript 前端开发 测试技术
手写call , apply , bind 方法的实现
本文通过实例讲解了JavaScript中`call`、`apply`及`bind`方法的用途与实现。以`call`为例,展示了如何改变函数内的`this`指向,并立即执行该函数。通过在`Function.prototype`上定义`myCall`,利用`Symbol`确保新增属性的唯一性,从而避免命名冲突。接着介绍了如何处理不定数量的参数传递,最终实现了自定义的`myCall`方法。随后简述了`apply`与`call`的区别,并展示了其实现方式,主要在于参数传递形式的不同。最后,通过`bind`方法创建了一个返回新函数的例子,该新函数具有固定的`this`上下文,同时支持分批参数传递。
23 2
手写call , apply , bind 方法的实现
|
2月前
|
JavaScript
js【详解】bind()、call()、apply()( 含手写 bind,手写 call,手写 apply )
js【详解】bind()、call()、apply()( 含手写 bind,手写 call,手写 apply )
22 0
|
4月前
04 # 手写 apply
04 # 手写 apply
48 0
|
4月前
|
前端开发 JavaScript 对象存储
【面试题】面试官为啥总是让我们手写call、apply、bind?
【面试题】面试官为啥总是让我们手写call、apply、bind?
|
前端开发
前端扫盲之手写apply
前端扫盲之手写apply
71 0
前端扫盲之手写apply
|
JavaScript
JS 手写实现call,apply方法
JS 手写实现call,apply方法
52 0
|
前端开发
前端扫盲202307手写apply
前端扫盲202307手写apply
52 0
|
缓存 移动开发 前端开发
10分钟教你手写8个常用的自定义hooks
Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。本文是一篇以实战为主的文章,主要讲解实际项目中如何使用hooks以及一些最佳实践,不会一步步再介绍一遍react hooks的由来和基本使用,因为写hooks的文章很多,而且官网对于react hooks的介绍也很详细,所以大家不熟悉的可以看一遍官网。
482 0