手动封装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

```

总结

验证完成 有所简化

posted @   前端导师歌谣  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示