首页 > 移动平台 > 详细

apply方法的实现原理

时间:2020-11-10 14:21:03      阅读:42      评论:0      收藏:0      [点我收藏+]

apply 的核心原理:

  • 将函数设为对象的属性
  • 执行和删除这个函数
  • 指定 this 到函数并传入给定参数执行函数
  • 如果不传参数,默认指向 window
Function.prototype.myApply= function(content = window){
    content.fn = this; //此时this指向的是调用myApply的函数bar
    let res;
    if(arguments[1]){
        res = content.fn(...arguments[1]);  //函数bar的this已经发生变化,指向content
    }else{
        res = content.fn();  
    }
    delete content.fn;
    return res;
}

var obj = {
    value: 1
};
function foo(name, age) {
    console.log(name)
    console.log(age)
    console.log(this); //此时this已经发生变化了
    console.log(this.value);
}
foo.myApply(obj, [‘Chocolate‘, 18]);

注意:当apply传入的第一个参数为null时,函数体内的this会指向window。

参考:https://blog.csdn.net/weixin_42429718/article/details/106826134

Function.prototype.myApply=function(content = window){ content.fn =this;//此时this指向的是调用myApply的函数barlet res;if(arguments[1]){ res = content.fn(...arguments[1]);//函数bar的this已经发生变化,指向content}else{ res = content.fn();}delete content.fn;return res;}var obj ={ value:1};functionfoo(name, age){ console.log(name) console.log(age) console.log(this);//此时this已经发生变化了 console.log(this.value);} foo.myApply(obj,[‘Chocolate‘,18]);

apply方法的实现原理

原文:https://www.cnblogs.com/yanjianjiang/p/13952657.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!