手写系列 # 4:实现 apply 方法

简介: 手写系列 # 4:实现 apply 方法

实现


apply 语法:


   fun.apply(context, [argsArr])


   context:在fun 函数运行时指定的this值


   argsArr:一个数组或者是类数组对象,其中数组中元素会作为单独参数传给fun。当参数值为null 或者undefined时,表示不需要传入任何参数。


处理参数上和 call 有区别,其他基本一样

Function.prototype.kaimoApply = function (context) {
  context = context || window;
  // 保留 this 
  const symbolFn = Symbol();
  context[symbolFn] = this;
  // 执行函数:处理参数上和 call 有区别
  console.log(arguments, arguments[1]);
  const result = arguments[1] ? context[symbolFn](...arguments[1]) : context[symbolFn]();
  // 删除上下文对象的属性
  delete context[symbolFn];
  // 返回执行结果
  return result;
}
const kaimoObj = {
  name: 'kaimo'
};
function kaimoTest() {
  console.log(this.name);
}
kaimoTest.kaimoApply(kaimoObj, [1, 2, 3]);


2084c2c5f8af4ec198c5a2cac70124b6.png


目录
相关文章
|
1月前
03 # 手写 call
03 # 手写 call
24 0
|
1天前
|
缓存 JavaScript 前端开发
手写JS的call、apply和bind方法
手写JS的call、apply和bind方法
|
1月前
04 # 手写 apply
04 # 手写 apply
33 0
|
8月前
|
前端开发 JavaScript API
Promise的用法&原理&手写实现-1
Promise的用法&原理&手写实现-1
30 0
|
10月前
手写apply
手写apply
45 0
|
10月前
|
JavaScript
JS 手写实现call,apply方法
JS 手写实现call,apply方法
45 0
|
11月前
|
前端开发
|
前端开发 JavaScript
手写javascript中的call、apply、bind方法~
手写javascript中的call、apply、bind方法记录
51 1
|
11月前
手写call-apply-bind以及了解柯里化
手写call-apply-bind以及了解柯里化
|
缓存 移动开发 前端开发
10分钟教你手写8个常用的自定义hooks
Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。本文是一篇以实战为主的文章,主要讲解实际项目中如何使用hooks以及一些最佳实践,不会一步步再介绍一遍react hooks的由来和基本使用,因为写hooks的文章很多,而且官网对于react hooks的介绍也很详细,所以大家不熟悉的可以看一遍官网。
374 0