• JavaScript学习笔记(1))——————call,apply方法


      学习前端也有一段时间了,但是效果甚微。利用时间不够充分,虽然是利用工作之余来学习。但是这不能成为我的借口。

    今天学习了(其实看了很多遍)call apply方法。

    function abc(a,b){
        return a + b;
    }
    
    function call1(num1,num2){
        return abc.call(this,num1,num2); //call方法传递的参数方式为一个一个传递
    }
    
    function apply1(num1,num2){
        return abc.apply(this,[num1,num2]);//这里appl方法传递的参数需要是一个数组,在不确定传递
                                           //的数量的时候,传递arguments是很方便的。
    }
    
    //作用(1):调用函数
    
    call1(10,20);    //30
    apply1(10,20);    //30
    
    
    //作用(2):扩充作用域
    window.color ='red';
    //color ='red'  这样也可以,不过带window开头更利于理解
    
    //定义一个obj对象
    var obj = {
        color:'blue'
    }
    
    var obj2 = {
        color:'green'
    }
    
    function sayColor(){
        console.log(this.color);
    }
    
    sayColor.call(this);    //'red'//在非严格模式下this===window
    sayColor.call(window);    //'red'
    sayColor.apply(this);    //'red'
    sayColor.apply(window);    //'red' //在不带第二参数时,call,apply使用无区别
    
    sayColor.call(obj); //'blue'
    sayColor.apply(obj);//'blue'
    
    //call,apply能做到很好的解耦
    
    sayColor.call(obj2); //'green'
    sayColor.apply(obj2);//'green'
    
    //(3)在构造函数继承的使用,用来继承属性
    
    function M(x,y){
        this.x = x;
        this.y = y;
        return this.x + this.y;
    }
    
    function Mchild(a,b,c){
        M.call(this,a,b);
        this.c = c;
    }
    
    var m1 = new Mchild(10,20,30);
    console.log(m1.x); //10
    console.log(m1.y); //20
    console.log(m1.c); //30

      

  • 相关阅读:
    【转载】Nginx负载均衡之后碰到的问题
    【转载】Nginx
    【转载】大型网站架构系列之一,前言,不得不考虑的问题
    【转载】Windows上搭个Nginx集群环境玩玩
    [转载]反射
    【转载】Nginx 简介
    【转载】系统性能调优吐血总结分享
    【转载】nginx for windows: 让nginx以服务的方式运行
    poj2377
    poj2371
  • 原文地址:https://www.cnblogs.com/niunai007/p/5017529.html
Copyright © 2020-2023  润新知