js的call()方法

        // ① 当函数中没有this时,call()、apply()和直接执行没有区别
        function fn(){
            console.log("aaa")
        }
        fn()    // aaa
        fn.call()    // aaa     ----fn是函数,函数也是对象,对象调用call()方法
        fn.apply()   // aaa
        // ② call改变this指向,this由原来的指向改为指向小括号内的对象
        function fn(){
            this.a=1;
            this.b=2;
        }
        var obj={};
        fn.call(obj)    // fn()函数执行的时候,this是window,也就是给window添加了两个全局变量。这里用call改变了this指向,this由原来的window指向了obj,也就是说,这里的fn()函数执行的时候,其实是执行了obj.a=1;obj.b=2
        console.log(obj)    // {a: 1, b: 2}
        // ③ call()传参是一个一个地传,apply()是第二个参数为一个数组
        function fn(name,age){
            this.name=name;
            this.age=age;
        }
        var obj={};
        fn.call(obj,"wql",23);
        console.log(obj)    // {name: "wql", age: 23}

 

posted @   吴小明-  阅读(651)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示