• 第七章 function


           在javaScript中,函数有两种,一种是普通函数,一种是构造函数,然而本质上只有一种,构造函数只不过是我们为了区分功能自创的说法。构造函数我们约定函数的第一个字母大写。这里说一说Function类型,也就是说好所Function的实例:函数。 函数就是对象,还是类。既可以把它当作一个普通对象用,也可以通过new方法来有它创造一个实例。

    • 定义函数有两种方法,一种是声明方式定义,一种是表达式方式定义。这两个的区别在于函数的定义是在什么时候,如果函数的定义在表达式里,那么我们就说是表达式方式定义的。
    • 函数没有重载,同名的新函数会覆盖同名的旧函数。
    • 函数声明在js里,即使在调用语句之后也是可以的,这成为声明提升,这个特性针对变量也是一样的。
    • 函数可以做为参数和返回值存在。
    • 函数内部有两个特殊对象:this和arguments
    • 函数内部有两个特殊属性:callee,是一个指针,指向函数本身。caller:也是一个指针,指向调用当前函数的函数。a调用b,那么b里边的arguments.caller就指向a。
    function a() {
        b();  //调用b
    }
    
    function b() {
        alert(b.caller);  //a.caller就指向a,相当于alert(a)
        alert(a);
    }
    a();
    • 函数有两个特殊的方法:apply()和call()。这两个函数都有一个作用,就是在特定的作用域内调用函数,使被调用的函数的this值变为我们设置的this值,这样就可以扩充函数运行的作用域,而且低耦合!ECMAScript5定义了一个bind()方法,也是差不多的效果。
    function sum(num1,num2) {
        alert(num1+num2);
    }
    
    function sum1(num1,num2) {
        sum.apply(this,arguments);   //调用了sum函数,并且把sum1的this和arguments对象做为参数,也就是把sum的this变成了sum1的this,sum的arguments对象变成了sum1的arguments对象。
    }
    
    sum1(1,2);  //3
  • 相关阅读:
    【日记】200617 今天开始写日记了
    近期未复现比赛汇总
    2021NSCTF RE WP
    2021国赛CISCN 初赛 部分REwriteup
    对流氓APP——一份礼物.apk的逆向分析
    RE之攻防世界 maze
    RE-攻防世界 logmein
    RE-攻防世界 T4 simple-unpack
    安天逆向工程课程 U1
    RE-攻防世界 simple-unpack
  • 原文地址:https://www.cnblogs.com/jingubang/p/4630377.html
Copyright © 2020-2023  润新知