• WEB前端第二十七课——js函数与对象


    1.JavaScript函数

      函数是由时间驱动的或者当它被调用时执行的可重复使用的代码块

      语法:function  函数名(参数1,参数2,…){

          函数内容语句(函数体)

         }

      函数命名规则与变量命名规则相同

      括号内的参数被称作形参

      通过函数名调用函数执行

    2.函数声明

      ① function命令,语法:function  函数名(参数1,参数2,…){ 函数体; }

        这种方式声明的函数可以通过函数名进行调用函数

      ② 函数表达式,语法:var  变量 = function(参数1,参数2,…){ 函数体; };

        这种方式声明的函数没有函数名,而是用变量来指代函数,通过访问变量进行调用函数(变量();)

      ③ Function构造函数,语法:var  变量 = new  Function();

        这种声明函数的方式很不直观,较少使用

    3.函数调用

      通常情况下,只要函数已经被声明,直接写出函数名和函数参数即可调用函数

      多次声明同名函数时,后声明的函数会覆盖先声明的函数

      通过function命令声明的函数,书写代码时可以将函数调用写在函数声明之前,因为JavaScript中存在一个隐式的函数提升(其他方式不行)

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Function</title>
    </head>
    <body>
    
    <script>
        var arr=[23,12,43,25,45,66];
        compare(arr);
        function compare(array) {
            var max=array[0];
            for (var i=1;i<array.length;i++){
                if (array[i]>max){
                    max=array[i];
                }
            }
            console.log(max);
            console.log(array.indexOf(max));
        }
    </script>
    </body>
    </html>
    

     4.函数类型

      无参数无返回值

      无参数有返回值

      有参数无返回值

      有参数有返回值

      返回值,函数执行结束后,返回到原本程序中函数所在的位置,用来替代整个函数的结果,通常使用 return关键词来实现

      形式参数,在定义函数时写在小括号内的参数,形式参数只在函数内部使用,不需要声明

      实际参数,在调用函数时写在小括号内的参数

    5.函数作用域

      JavaScript 中只有两种作用域(scope):

        全局作用域,整个程序

        函数作用域,函数内部

      和作用域相对应的,JavaScript中有两种变量:

        全局变量(global variable),在函数外声明的变量,可以在函数内部(全域)读取

        局部变量(local variable),在函数内部声明的变量,只能在函数内部使用

    6.函数其他说明

      ECMAScript规定,不能在非函数的代码块中声明函数,如 if(参数){ function 函数名(){}; } 这种声明方式是错误的!

      可以使用 name属性来获取函数名,如 函数名 .name; 返回值为函数名

      可以使用 length属性来获取函数参数的个数,如 函数名 .length; 返回值为参数个数

      还有一种特殊的函数叫作自执行函数,其不需要调用就能够自动执行,语法 (function(){ 函数体; }()); 或 (function(){ 函数体; })();

    7.JavaScript对象

      对象(object)是用大括号定义的无序的数据集合,由键值对构成

      键与值之间用冒号分隔,大括号末尾使用分号表示对象定义结束

      语法:var obj = { key : value}; ,其中 key是键名、value是键值

      如果一个对象内部包含多个键值对,每个键值对之间使用逗号分隔,最后一个键值对末尾不需要添加逗号

    8.键名(对象属性)

      键名也被成为属性(property),对象的所有属性都是字符串,所以键名可以不加引号

      但是,如果属性不符合标识符的条件规则,如以数字开头、含有空格或运算符等,则必须使用引号

        示例:var obj = { '1S':sa, 'S Y':nice, 'm+n':number}

      JavaScript的保留字可以不加引号直接作为对象的属性使用

    9.键值

      键值是属性所对应的具体值,可以是任何数据类型

      如果一个属性的值(ability)为函数,通常把这个属性称为 方法,可以向函数一样调用这个属性(方法)

        语法示例: var obj = {ability:write()}; ,调用属性:obj .ability();

    10.创建对象

      三种创建方式:

        ① 直接使用大括号创建对象(最常用),如 var obj={ };

        ② 使用 new命令生成一个 Object对象的实例(构造函数的写法),如 var obj= new Object();

        ③ 使用 Object .create方法创建对象(适用于需要对象继承的场景),如 var obj= Object .create(null);

     11.对象的读写

      ① 属性读取:

        读取属性的两种方法:一种是使用点号运算符,二种是使用方括号运算符

        语法:var obj = {key:value};

           console.log(obj .key);

           console.log(obj['key']);

        需要注意的是使用方括号读取对象属性时必须加引号!

        访问不存在的属性时,返回值为“undefined”

      ② 属性写入

        点号运算符用来为对象的属性写入值

        语法:var obj = {};

           obj .key=value;

           console.log(obj.key);

        点号和中括号运算符都可以用于为对象属性赋值,当属性不存在时添加属性,当属性存在时修改属性

      ③ 中括号与点号的区别

        中括号运算符总是能替代点号运算符,但点号运算符却不一定能替代中括号运算符,体现在如下三点:

        中括号运算符可以使用字符串变量的内容作为属性名,点号运算符不可以

          示例: var obj={name:'Meci', age:21};

              var str='age';

              console.log(obj.str);  //不可以

              console.log(obj[str]);  //可以

        中括号运算符可以使用纯数字作为属性名,点号运算符不可以

          示例:var obj={};

             obj[1]='first';  //可以

             obj.2='second';  //不可以

        中括号运算符可以使用js关键字和保留字作为属性名,点号运算符不可以,通常规避关键字和保留字

    12.对象的操作

      Object.keys(),获取对象所有属性,

        语法:Object.keys(对象名);,返回值为属性构成的数组

      delete,删除一个属性,

        语法:delete obj.property;,返回值为Boolean(true/false)

        delete方法直接改变原始对象内容,删除后再读取该属性时返回值为“undefined”

        delete对应的属性不存在时,不会报错,且返回值为 true

      in,检查对象是否包含一个属性

        语法:'property' in obj;,返回值为布尔值,true(包含) 或 false(不包含)

      for in,遍历对象所有属性

        语法:for (var prop in obj){ console.log(obj[prop]); },此处使用 [ ] 访问,返回值为对象属性值

      with,同时操作多个对象属性

        语法:with (对象名){ key1:value1; key2:value2; }

        注意,with只能操作对象中已经存在的属性,不能添加属性

    13.对象的引用

      如果不同的变量名指向同一个对象,那么它们都成为这个对象的引用

      所有变量引用对象时都是引用的该对象的内存地址,不同于基础数据的引用(直接引用值)

      因此,修改其中一个变量所指向的对象的值,会影响到所有指向该对象的变量

  • 相关阅读:
    Delphi Class of 类引用
    Class-reference types 类引用类型--快要失传的技术
    最简单的TabHost
    修改一些IntelliJ IDEA 11的设置,使Eclipse的使用者更容易上手(转)
    uva 10494
    uva748
    uva 465
    高精度
    uva 694
    uva414
  • 原文地址:https://www.cnblogs.com/husa/p/13538178.html
Copyright © 2020-2023  润新知