zoukankan      html  css  js  c++  java
  • 第七章 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
  • 相关阅读:
    缩点【洛谷P1262】 间谍网络
    模板-割点
    Tarjan缩点+LCA【洛谷P2416】 泡芙
    模拟赛 10-20考试记
    BFS【bzoj1667】: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛
    最短路【bzoj2464】: 中山市选[2009]小明的游戏
    linux /dev/mapper/centos-root 被占满
    Centos7中安装Mysql8并修改密码策略并远程连接
    Centos7中PHP编译安装mysqli扩展报错
    Linux中Composer 在安装依赖包与本地php版本不符问题
  • 原文地址:https://www.cnblogs.com/jingubang/p/4630377.html
Copyright © 2011-2022 走看看