zoukankan      html  css  js  c++  java
  • js 函数

    在javaScript 中函数就是对象,对象是'名/值'对的集合拥有一个连到原型对象的隐藏连接。

    对象字面量产生的对象连接到 Object.prototype。函数连接到 Function.prototype (该原型对象本身连接到Object.prototype)。

    每个函数在创建时会附加2个隐藏属性:函数的上下文实现函数执行的代码(会设置一个调用属性,调用一个函数时,可以理解为:调用此函数的调用属性)。

    函数字面量

      函数通过函数字面量创建:

    var add = function(a,b){
        return a+b;
    }

    函数字面量包含4个部分:

    • 保留字 function
    • 函数名,它可以被省略,函数可以用它的名字递归调用自己,如果没有名字,就称之为匿名函数
    • 在圆括号中的参数,多个参数逗号隔开
    • 包含在花括号中的语句,这些语句是函数的主体。在函数被调用时执行

    调用

      调用一个函数会暂停当前函数的执行,传递控制权和参数和新的函数,处了声明定义时的形式参数(形参),每个函数还会收到2个附加参数: this 和 arguments。

      参数 this 在面向对象编程中非常重要,它的值取决于调用模式,在javaScript 中一共有4中调用模式:方法调用模式函数调用模式构造器调用模式apply调用模式

       方法调用模式

        当一个函数被保存在一个对象属性中,我们称之为方法调用,当一个方法调用时,this会绑定到该对象,方法可以使用this访问自己所属的对象,所以能访问或者修改对象上的属性。

      例如 

    var obj = {
        name: 'zs',
        say: function(){
         this.name = 'ls';
            return this.name;
        }
    }
    obj.say();//ls 

      函数调用模式

        当一个函数并非一个对象属性时,那么它就是当一个函数调用,此模式下,this 会绑定全局对象。

    var num = add(3,4);

      构造器调用模式

        如果一个函数前面带上 new 来调用,那么背地里会连接到该函数的 prototype 成员的新对象,同时this会绑定到新对象上。    

    var a = function(){}
    a.prototype.getName = function(){
        return 'zs';
    }
    var b = new a();
    b.getName();//zs

      apply调用模式

        apply 方法让我们构建一个参数数组传递给调用函数,也允许我们选择 this 的值。apply 方法接收2个参数,第一个是要绑定给 this 的值,第2个就是一个参数数组。

    var arr = [3,4];
    function add (a,b){
        return a + b;
    }
    var sum = add.apply(null,arr);
    console.log(sum);//7
    function a(){
        return this.name;
    }
    var t = {
        name: 'zs'
    }
    var name = a.apply(t);
    console.log(name);//zs

        

  • 相关阅读:
    Maven 环境的配置
    zTree的简单例子
    plsql免安装客户端的配置
    HDU 1232 畅通工程
    HDU 5698 瞬间移动
    Codeforces 1015E1 Stars Drawing (Easy Edition)
    Codeforces 784B Santa Claus and Keyboard Check
    Codeforces 500C New Year Book Reading
    NSarray 赋值 拷贝 等问题记录
    UINavigationController 操作记录
  • 原文地址:https://www.cnblogs.com/bruce-gou/p/10129644.html
Copyright © 2011-2022 走看看