Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
vegetalbirddd committed Nov 13, 2023
1 parent fef7bff commit 93383e8
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion docs/面试/NONI/JS/JS基础/手写call.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
### **call()**

调用call的函数挂载到传入的第一个参数上,再通过该参数对象来调用‘调用call的函数’,并且能够得到传入其他参数后执行得到的结果
call()能够改变this指向,执行当前的函数。调用call的函数挂载到传入的第一个参数上,再通过该参数对象来调用‘调用call的函数’,并且能够得到传入其他参数后执行得到的结果

例如:Fn.call(context, a,b),函数Fn挂载到context对象上,通过context对象调用函数Fn,并且能够得到传入参数a,b后执行得到的结果

Expand All @@ -27,10 +27,12 @@ Function.prototype.myCall = function (context) {

// 生成唯一的属性名,避免与已有属性冲突
let key = Date.now().toString(36);
//为context创建一个临时属性,指向调用它的函数
context[key] = this;

// 获取参数并执行函数
let args = Array.from(arguments).slice(1);
//模拟在指定上下文中调用函数,并获取函数执行的结果。
let result = context[key](...args);

// 删除临时属性
Expand Down

0 comments on commit 93383e8

Please sign in to comment.