前端扫盲202307手写call(2)

简介: 前端扫盲202307手写call

继续优化

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

运行结果

image.png




测试没有参数

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

运行结果


image.png


测试多个参数

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

运行结果


image.png


总结


 我是歌谣 最好的种树是十年前 其次是现在 谢谢大家的一键三联


相关文章
|
5月前
|
前端开发 JavaScript 开发者
揭秘JavaScript魔法三剑客:call、apply、bind,解锁函数新世界,你的前端之路因它们而精彩!
【8月更文挑战第23天】在 JavaScript 的世界里,`call`、`apply` 和 `bind` 这三个方法常常让新手感到困惑。它们都能改变函数执行时的上下文(即 `this` 的指向),但各有特点:`call` 接受一系列参数并直接调用函数;`apply` 则接收一个参数数组,在处理不确定数量的参数时特别有用;而 `bind` 不会立即执行函数,而是创建一个新版本的函数,其 `this` 上下文已被永久绑定。理解这三个方法能帮助开发者更好地运用函数式编程技巧,提升代码灵活性和可维护性。
45 0
|
8月前
|
前端开发 JavaScript
【Web 前端】 js中call、apply、bind有什么区别?
【4月更文挑战第22天】【Web 前端】 js中call、apply、bind有什么区别?
【Web 前端】 js中call、apply、bind有什么区别?
|
8月前
|
前端开发 JavaScript
前端 JS 经典:apply、call、bind
前端 JS 经典:apply、call、bind
100 0
|
前端开发
前端学习笔记202306学习笔记第三十八天-手写call得实现1
前端学习笔记202306学习笔记第三十八天-手写call得实现1
49 0
|
存储 移动开发 前端开发
【React工作记录九十四】前端小知识点扫盲笔记记录3
【React工作记录九十四】前端小知识点扫盲笔记记录3
87 0
|
前端开发
前端扫盲之手写apply
前端扫盲之手写apply
84 0
前端扫盲之手写apply
|
前端开发
前端扫盲202307手写apply
前端扫盲202307手写apply
64 0
|
前端开发
前端扫盲202307手写call(1)
前端扫盲202307手写call
63 0
|
前端开发
前端小知识点扫盲笔记记录8
前端小知识点扫盲笔记记录8
44 0
|
前端开发
前端学习笔记202306学习笔记第三十八天-手写call得实现2
前端学习笔记202306学习笔记第三十八天-手写call得实现2
51 0