手写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
相关推荐
訾博ZiBo14 分钟前
React 状态管理中的循环更新陷阱与解决方案
前端
StarPrayers.28 分钟前
旅行商问题(TSP)(2)(heuristics.py)(TSP 的两种贪心启发式算法实现)
前端·人工智能·python·算法·pycharm·启发式算法
qiuiuiu41335 分钟前
正点原子RK3568学习日志-编译第一个驱动程序helloworld
linux·c语言·开发语言·单片机
一壶浊酒..1 小时前
ajax局部更新
前端·ajax·okhttp
苏打水com1 小时前
JavaScript 面试题标准答案模板(对应前文核心考点)
javascript·面试
molong9311 小时前
Kotlin 内联函数、高阶函数、扩展函数
android·开发语言·kotlin
Wx-bishekaifayuan1 小时前
基于微信小程序的社区图书共享平台设计与实现 计算机毕业设计源码44991
javascript·vue.js·windows·mysql·pycharm·tomcat·php
盼哥PyAI实验室1 小时前
踏上编程征程,与 Python 共舞
开发语言·python
阿无,2 小时前
Java设计模式之工厂模式
java·开发语言·设计模式
DoraBigHead2 小时前
React 架构重生记:从递归地狱到时间切片
前端·javascript·react.js