js的apply、call、bind

javascript的apply、call、bind实现

Function.prototype.myCall=function(context,...arg){
    let ctx=context||window
    let uuid= Symbol()

    ctx[uuid]=this

    let result=ctx[uuid](...arg)

    return result

}
Function.prototype.myApply=function(context,arg){
    let ctx=context||window
    let uuid= Symbol()

    ctx[uuid]=this

    let result=ctx[uuid](...arg)

    delete ctx[uuid]

    return result
    
}
Function.prototype.myBind=function(context,arg){
    const fn =this
    return function(...innerArgs){
        return fn.apply(context,arg.concat(innerArgs))
    }
}
const obj={
	name:'jack'
}
function greet(args){
	console.log('xx',this,args)
}

greet()
greet.apply(obj,['apply rose'])
greet.call(obj,'call rose')
let f=greet.bind(obj)
f('bind')

输出

“xx” [object Window] undefined
“xx” Object { name: “jack” } “apply rose”
“xx” Object { name: “jack” } “call rose”
“xx” Object { name: “jack” } “bind”

相关推荐

  1. jsjsp区别

    2024-03-29 05:12:03       16 阅读
  2. jsjq之间联系(补)

    2024-03-29 05:12:03       16 阅读
  3. js中()作用

    2024-03-29 05:12:03       36 阅读
  4. js考试试题

    2024-03-29 05:12:03       33 阅读
  5. js字符串方法

    2024-03-29 05:12:03       44 阅读
  6. jsprototype

    2024-03-29 05:12:03       28 阅读
  7. js同步异步

    2024-03-29 05:12:03       22 阅读
  8. js异步请求?

    2024-03-29 05:12:03       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-29 05:12:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-29 05:12:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-29 05:12:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-29 05:12:03       20 阅读

热门阅读

  1. python解压RAR文件

    2024-03-29 05:12:03       16 阅读
  2. 大前端-postcss安装使用指南

    2024-03-29 05:12:03       19 阅读
  3. ubuntu18.04找不到网络适配器,无法连接网络

    2024-03-29 05:12:03       17 阅读
  4. CUDA从入门到放弃(七):流( Streams)

    2024-03-29 05:12:03       17 阅读
  5. SHELL(01)

    2024-03-29 05:12:03       17 阅读
  6. 本人拟采购开发工具

    2024-03-29 05:12:03       16 阅读
  7. 幽默记忆TCP/UDP/DNS/三次握手

    2024-03-29 05:12:03       16 阅读