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