手写call方法

javascript 复制代码
 Function.prototype.myCall=function (context,args) {
        console.log(arguments)
        //context 表示call里面的第一个参数也就是需要改变this指向的那个对象。
        //this表示这个方法
        //把这个方法挂到需要改变指向的对象身上调用,相当于把this指向了这个对象身上,从而达到改变this的作用。
        //argument是一个特殊的对象,可以获取方法传入的参数。
        context.fn=this
        let arr = []
        for(let i =1;i<arguments.length;i++){
            console.log(arguments[i])
            
                //arr.push(arguments[i])
                arr.push('arguments[' + i + ']');
           
        }
        console.log(arr)
        console.log(arguments[1])
        eval('context.fn('+arr+')')
        //context.fn();
        delete context.fn

    }


    let person = {
        name:'tom',
        age:22,
        sex:'male',
        sayName:function(){
            console.log(this.name)
        },
        showInfo:function(name,age,sex){
            this.name=name;
            this.age=age;
            this.sex=sex;
            console.log('name:'+this.name+',age:'+this.age+',sex:'+this.sex)
        }
    }

    let person2={
        name:'tony'
    }
    person.showInfo('lily',22,'female')
    person.showInfo.myCall(person2,'john',11,'male') //name:john,age:11,sex:male
相关推荐
大怪v10 小时前
AI抢饭?前端佬:我要验牌!
前端·人工智能·程序员
新酱爱学习10 小时前
字节外包一年,我的技术成长之路
前端·程序员·年终总结
小兵张健11 小时前
开源 playwright-pool 会话池来了
前端·javascript·github
IT_陈寒13 小时前
Python开发者必知的5大性能陷阱:90%的人都踩过的坑!
前端·人工智能·后端
codingWhat14 小时前
介绍一个手势识别库——AlloyFinger
前端·javascript·vue.js
Lee川14 小时前
深度拆解:基于面向对象思维的“就地编辑”组件全模块解析
javascript·架构
代码老中医14 小时前
2026年CSS彻底疯了:这6个新特性让我删掉了三分之一JS代码
前端
进击的尘埃14 小时前
Web Worker 与 OffscreenCanvas:把主线程从重活里解放出来
javascript
不会敲代码114 小时前
Zustand:轻量级状态管理,从入门到实践
前端·typescript
踩着两条虫14 小时前
VTJ.PRO 双向代码转换原理揭秘
前端·vue.js·人工智能