前端扫盲202307手写apply

前言

e92c152dc703b6db0da6960c550c1d6a.png

 大家好 我是歌谣 今天继续给大家带来新知识点的一个讲解 就是我们的一个手写apply的讲解 上一节我们是关于手写call的讲解

ab3a48c313340633bd0c1f8e49e139a1.png

apply的用法

bc1f69ff14b480553bd56a6a9c05d253.png

我们先来看看apply的用法

3c5fd471082ae4fd25b89a42d113e9d6.png

var geyao = {
            name: "geyao",
            show(data) {
                console.log(this, "this")
                console.log(` 我是${this.name}${data}`)
            }
        }
        var fangfang = {
            name: "fangfang"
        }
        geyao.show.apply(fangfang,["我很聪明"])

运行结果

daf4d648ed0d9cdf635d9d608786d431.png

cf45e6bdddb6f3697406d4eadbd70372.png

核心apply

75d01a3f33d849a6cdebd4d8e883e8b8.png

第一 执行的函数立即执行 第二 可以改变this的指向

9ae1c161bbf65daafd3e41ec9c3d089f.png

var geyao = {
            name: "geyao",
            show(data) {
                console.log(this, "this")
                console.log(` 我是${this.name}${data}`)
            }
        }
        var fangfang = {
            name: "fangfang"
        }
        geyao.show.apply(fangfang,["我很聪明"])
        Function.prototype.GeyaoApply = function (content,arguments) {
            //解决没有参数 就是window的问题
            content = content || window
            //定义唯一值
            let unique=Symbol()
            content[unique]=this
            //解决传递多个参数的问题
            content[unique](...arguments)
            //删除多余属性
            delete content[unique]
        }
        geyao.show.GeyaoApply(fangfang,["我很聪明"])

运行结果

0315667a0513f0087620cb784b6573be.png

c0e12ee1fac35b30e567252f4b536344.png

总结

dca1b638d376317829a6c67e882df1b9.png

 我是歌谣 最好的种树是十年前 其次是现在

87473d86f0691a1c5031a420c8e67aa1.png

下方查看历史文章

f0281078567dcb8c7b5deb05f04b62f4.png

nvm安装解决项目之间的依赖关系

react-admin+postgrest实现增删改查功能(摆脱接口开发)

uniapp+vue+uview适配安卓4.4项目实现简单登录和操作页面

hook+ant design实现文本Input多行编辑

001d47ef5a8636e2ed3f7a8014a36d27.png

点个在看你最好看

posted @ 2023-07-20 08:00  前端导师歌谣  阅读(15)  评论(0)    收藏  举报  来源