当前位置:首页 > JavaScript

js call 实现

2026-01-30 21:18:25JavaScript

js call 实现

js call 实现

实现 call 方法

call 是 JavaScript 中函数的一个方法,用于改变函数的 this 指向并立即执行。可以通过以下方式手动实现:

Function.prototype.myCall = function(context, ...args) {
  context = context || window;
  const fn = Symbol('fn');
  context[fn] = this;
  const result = context[fn](...args);
  delete context[fn];
  return result;
};

实现原理

  1. 将函数设置为传入对象的属性,这样函数内的 this 就会指向该对象。
  2. 使用 Symbol 确保属性名唯一,避免覆盖原有属性。
  3. 执行函数并保存结果,最后删除临时属性并返回结果。

使用示例

function greet(message) {
  console.log(`${message}, ${this.name}`);
}

const person = { name: 'Alice' };

greet.myCall(person, 'Hello'); // 输出: "Hello, Alice"

注意事项

  • 第一个参数为 nullundefined 时,this 会指向全局对象(浏览器中为 window)。
  • 使用剩余参数 ...args 收集所有传入的参数,确保兼容不同数量的参数。

标签: jscall
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…