<script>
let obj={
name:'qwe',
fn(){
console.log(this.name)
console.log(...arguments)
}
}
let obj2={
name:'zxc'
}
//封装call
Function.prototype.myCall=function(that,...argu){
that=that||window
var fnName=Symbol(this.name)
that[fnName]=this;
let res=that[fnName](...argu);
delete that[fnName]
}
// obj.fn.myCall(obj2,1,2,3)
//apply
Function.prototype.myApply=function(that,argu){
that=that||window
fnName=Symbol(this.name)
that[fnName]=this
that[fnName](...argu)
delete that[fnName]
}
// obj.fn.myApply(obj2,[1,2,3])
//bind
Function.prototype.myBind=function(that,...argu){
that=that||window
let _self=this
return function(){
_self.myApply(that,argu.concat(...arguments))
}
}
let fn2=obj.fn.myBind(obj2,1,4,5)
fn2()
</script>
封装call,apply,bind
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- call方法 首先要了解call方法,在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充...
- 1、单对象编程:聚焦点"命名空间"的使用 2、bind()/call()/apply();的区别: (1).三者...
- 我们都知道call apply bind都可以改变函数调用的this指向。那么它们三者有什么区别,什么时候该用哪个...
- 1, 首先call()、apply()、bind() 都是用来重定义 this 这个对象的 例子1: <!DOCT...
- apply、call、bind apply call借用他人的函数方法 网上文章虽多,大多复制粘贴,且晦涩难懂,我...