目录
前言
导语
代码部分
总结
前言
我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷
导语
手动封装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
总结
验证完成 有所简化