• call与apply基础用法告诉你


       Js用法中还有个极好的但是有些抽象的用法——call与apply,今天我要简单总结一下:

       

     var ob1={  //对象ob1
                name:"ob1",
                func1:function(a,b,c){
                    alert(this.name+a+b+c);
                }
                }
    
             var ob2={ //对象ob2
                name:"ob2",
                func2:function(){
                    alert(this.name);
                }
                }
              ob1.func1.call(ob2,"1","2","3");  //ob1123,call让对象b调用了a的func1,把指向a的指针指向了b,让b可以通过a的func1的写法访问到自己的属性
              ob2.func2.call(ob1);  //ob1
              ob1.func1.apply(ob2,[1,2,3]); //ob2123
              ob2.func2.apply(ob1); //ob1
    

        "ob2.func2.call(ob1)"等价于"ob1.func2()",事实上ob1并没有fun2,但是call可以帮他从ob2那儿借来并且指针指向ob1,func2中的this指向了它的调用者ob1,输出ob1的name属性。apply与call用法一样,但是参数传递的方式不同。

             你可能会觉得有点绕,怀疑这样写的方便性在哪儿。我们来简单粗略地总结一下它该何时用,当对象2想要调用对象1中的方法,以便少写代码时,一般此时对象1与对象2具有相似的属性,类型相近或者相同。

              

          

  • 相关阅读:
    loushang框架的开发中关于BSP的使用,将写好的功能模块部署到主页界面结构上
    浪潮“楼上”开发平台简介
    New博客园新的开始!
    python相关
    day20 函数闭包与装饰器
    计算机基础
    day19 生成器函数
    简历
    day18 迭代器
    数据库基础(代码)
  • 原文地址:https://www.cnblogs.com/zhu-xingyu/p/5295031.html
Copyright © 2020-2023  润新知