手动封装callES6

简介: 手动封装callES6

代码部分

//传入两个参数 一个需要绑定的对象 一个传入的参数
  Function.prototype.mycall=function(obj,...args){
    //参数不是对象需要转成对象 当值为null喝undefined的时候默认指向windows
    obj = obj ? Object(obj) : window;
    //设置唯一值
    var key=Symbol()
     //修改this指向 添加一个属性指向this
     console.log(this,"this") //fn(a, b, c)
     console.log(args,"args") //fn(a, b, c)
     console.log(...args,"argsList") //fn(a, b, c)
    obj[key]=this
     //扩展运算符可以把字符串 转化为数组 数组转换为字符串
    var result=obj[key](...args)
    //删除已经绑定的对象属性
    delete obj.geyao
    return result
  }
    var name = 'fangfang';
    var obj = {
        name: 'geyao'
    };
    function fn(a, b, c) {
        console.log(a + b + c + this.name);
        return a + b + c + this.name
    };
    fn.mycall(obj,"我的", "老婆", "是"); // 我的老婆是geyao

总结

验证完成 有所简化

目录
打赏
0
0
0
0
64
分享
相关文章
C++(七)封装
本文档详细介绍了C++封装的概念及其应用。封装通过权限控制对外提供接口并隐藏内部数据,增强代码的安全性和可维护性。文档首先解释了`class`中的权限修饰符(`public`、`private`、`protected`)的作用,并通过示例展示了如何使用封装实现栈结构。接着介绍了构造器和析构器的使用方法,包括初始化列表的引入以及它们在内存管理和对象生命周期中的重要性。最后,通过分文件编程的方式展示了如何将类定义和实现分离,提高代码的模块化和复用性。
|
7月前
什么是封装?为什么是要封装?
什么是封装?为什么是要封装?
154 0
|
8月前
|
C#封装详解
C#封装详解
95 0
|
8月前
|
(接口封装)
(接口封装)
105 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等