zoukankan      html  css  js  c++  java
  • 函数的属性和方法(apply()、call())

    //length属性:表示函数希望接收的命名参数的个数
    //prototype属性:保存所有实例方法的地方,如toString()和valueOf()都保存在prototype下
    console.log("函数的属性length,prototype");
    function sayName(name) {
        alert(name);
    }
    
    function sum(num1, num2) {
        return num1 + num2;
    }
    
    function sayHi() {
        alert('hi');
    }
    
    console.log(sayName.length);//1
    console.log(sum.length);//2
    console.log(sayHi.length);//0
    
    /*
    *apply()和call()方法:改变函数体内this对象的值(可以理解为作用域),真正的作用是可以扩充函数赖以运行的作用域
    *apply()接收两个参数,第一个为作用域(也就是要改变this所指向的值),第二个参数为参数数组,可以是Array的实例,也可以是arguments对象
    *call()方法与apply()方法作用相同,区别在于接收参数的方式不同,第一个为作用域,其他的为要传入的参数,以枚举的方式传入
    */
    console.log("apply()方法和call()方法");
    function sum2(num1, num2) {
        return num1 + num2;
    }
    
    function callSum1(num1, num2) {
        return sum2.call(this, num1, num2);//sum2的作用域设置成callSum1,传入callSum1的参数num1, num2
    }
    
    function callSum2(num1, num2) {
        return sum2.apply(this, arguments);//sum2的作用域设置成callSum1,传入callSum2的参数arguments
    }
    
    console.log(callSum1(1, 2));//3
    console.log(callSum2(3, 2));//5
    
    //扩充函数运行的作用域
    console.log("扩充函数运行的作用域");
    
    window.color = "red";
    var o = {color: "blue"};
    
    function sayColor() {
        console.log(this.color);
    }
    
    sayColor(this);//red
    sayColor(window);//red
    sayColor(o);//blue
  • 相关阅读:
    (转载)自己实现spring
    重装mysql步骤
    华为过滤字符串(java)
    华为 去掉最大最小值
    Class.forName()数据库驱动
    线程中Join的使用例子
    基数排序的总结
    javaweb要点复习 jsp和servlet
    Qt实现360安全卫士10.0界面(编译时出现的一些问题)
    VS2010 添加资源文件后,出现 “LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”错误
  • 原文地址:https://www.cnblogs.com/qiangspecial/p/3129865.html
Copyright © 2011-2022 走看看