JavaScript基础知识3

数组、函数、对象

1、数组

  1. 定义数组

    语法:    var  自定义数组名称 = [];
    
  2. 给数组赋值

      ✔直接在定义数组的时候,就可以赋值了,值与值之间使用逗号隔开。
    
         例如: var  ary = [1,2,3,4,'abc',true,'汉字'];
    
      ✔通过索引(编号)的方式给数组赋值:
    
           索引: 数组中每一个值对应的编号,编号是从 0 开始的
               
           索引赋值语法:     自定义数组名称[索引值] = 值;
    
           例如:  
           ary[0] = 'a';
           ary[1] = 'b';
           ary[2] = 123;
    
  3. 获取数组中的值: 通过数组索引的方式获取数组中的值(索引是从0开始的)

     数组名称[索引值]
    
  4. 获取数组的长度: 数组名.length

  5. 数组遍历: 通过循环的方式获取数组中的值。

  6. 冒泡排序:

    ✔ 对数据进行从小到大排列(升序)

    ✔ 对数据进行从大到小排列(降序)

  7. 字面量方式

    var 数组名称 = [];
    var ary = [1,2,3];
    var max = ary[0];
    for(var i = 0; i < ary.length; i++) {
    if(max < ary[i]) {
    max = ary[i]
    }
    }

    ary[0] = 123;

    ary[0;]

    for (var i = 0; i < ary.length; i++) {
    console.log(ary[i])
    }
    
    Math.random()   随机数[0,1)
    
    Math.floor(Math.random()*(n-m+1) + m);
    
    Math.ceil() 
    

☞ 其他部分

1. 获取当前系统时间  

    步骤:  
       1. var  time  = new Date();

       2. 获取年月日,时分秒

       getFullYear() | getMonth() | getDate() | getHours() | getMinutes()  | getSeconds()

    注意:
        获取月份的时候是从0开始的。


2. 获取随机数: 随机产生的数字

    步骤: 通过  Math.random(); 产生一个随机数  范围[0,1)


3. 将数字转化为整数

      ✔地板函数:   Math.floor(变量)   返回一个小于当前数字的一个整数,且与其最接近的一个整数。
    
      ✔天花板函数: Math.ceil(变量)    返回一个大于当前数字的一个整数,且与其最接近的一个整数。


4. 字符串操作。

     字符串.split('分割符')   ===> 是一个数组

2.函数

语法:

bfunction  自定义函数名() {

     写上对应的代码
            }
          注意:
            1. 函数的命名规范: 要使用小驼峰命名法,要动词开始

            2. 函数体中的代码,默认不会执行,调用函数才可以执行里面的代码。

        ☞如何调用函数?  ====> 执行函数

          函数名();


        ☞ 函数中的参数:

             ✔ 形参:是一种形式的参数,其实就是一个变量【在函数名后面写的参数就是形参】

             ✔ 实参:是一个具体值【在调用函数时候后面写的参数】

             ✔ 实参和形参之间的关系:

                 形参值的 来自于 实参的赋值结果(形参和实参是一一对应的)

                 形参 = 实参

             ✔ 如果一个函数没有参数,那么该函数就是无参函数


        ☞ 作用域:
              
            ✔ 局部作用域:在函数内部的区域,局部作用域,在局部作用域中定义的变量,局部变量。

                 注意:
                     1. 局部作用域中的变量(局部变量)只能在局部作用域中使用,不能在全局作用域中使用。

            ✔ 全局作用域:在函数外部的区域,全局作用域。在全局作用域中定义的变量,全局变量。

                 注意:
                      1. 全局变量可以在任何地方被使用。


        ☞ 返回值: 如果希望在全局作用域中得到局部变量的值,那么就可以使用返回值。

             语法:
                 
                 return  变量(具体的值);

             总结:

                 1. 一个函数中只能写一个返回值

                 2. 在程序中,当前代码执行到return关键字的时候,后面的代码不再执行。

                 3. 数组也可以作为返回值

                 4. 如果一个函数中没有写return,那么该函数也是有返回值的,返回值是 undefined。

                 5. 如果一个函数return后面没有写任何值,那么最后返回结果是 undefined。

☞ 函数其他部分:

  ✔ 函数的另外一种定义方式 

     var 变量 = function() {}  (字面量方式创建函数)


  ✔ 函数的分类

       1. 命名函数: 有函数名称

       2. 匿名函数:没有函数名


  ✔ 函数的调用方式:
       
       1. 通过函数名称+()方式调用函数 

       2. 函数可以自己调用自己(自调用函数)。

          例如: 
          (function fn(a) {
            alert(a);
          })(1)


          或者

          (function(a) {
            alert(a);
          })(1)

    ✔ 作用域链(理论知识):作用域和作用域之间形成的一个链条状

    ✔ arguments使用:保存的就是用户传递的实参信息(个数,具体的值)

        ☞ 通过arguments.length   ---> 获取到实参的个数

        ☞ arguments 保存的值,都是以数组的形式保存的,如果希望获取具体的值,那么只要遍历arguments即可。

        ☞ 当函数中无法确定形参个数的时候,那么可以通过arguments来获取实参信息

        ☞ 如果函数能够确定形参个数的时候,还是建议使用形参

☞ 代码预解析:

 1. 变量提升 :当程序中遇到定义变量后,就会将该变量的定义提升到当前作用域的开始位置,不包括变量的赋值

 2. 函数提升:当程序中遇到函数的声明时,那么会将函数的声明提升到当前作用域的开始位置,不包括函数的调用

3.对象

对象: 指的是一个具体的事物(人,物品),在程序中对象其实就是对现实生活中具体事物的一个抽象描述。

   对象本质: 在程序中保存数据的【容器】

语法:

     1. 通过字面量方式创建一个对象(容器)

        var 自定义名称 = {

            自定义键 : 值,
            自定义键 :值
            
        }


      2. 通过构造函数创建对象(字面量方式是该种方式的一种简写行式)

      语法:
           var 自定义对象名 = new Object();

      分析构造函数创建对象

           1. 构造函数: 本质还一个函数,只不过该函数是用来创建对象的【构造函数的命名是按照帕斯卡命名法】

           2. Object()就是js中内置的一个用来创建对象的一个构造函数

           3. 关键字new : 用来调用构造函数实现实例化一个对象(创建一个对象)

           4. 执行过程:
                  ✔ 先执行 new Object()  在内存中开辟一块空间(产生一个内存地址)

                  ✔ 将内存地址 赋值给左侧的变量

                  ✔ 变量就会按照内存地址去实现对象中的代码


      3. 通过工厂方式创建对象:将构造函数创建的对象封装到一个函数中

       例如:
       function createPeople (uName, uAge, uScore) {

            var obj = new Object();

            obj.userName = uName;

            obj.age = uAge;

            obj.score = uScore;

            return obj;
        }

        var zs = createPeople('zs', 18, 100);
        var ls = createPeople('ls', 22, 90);

        console.log(zs);
        console.log(ls);


      4. 通过自定义构造函数创建对象

           ☞ 自定义构造函数本质: 还是一个函数(1. 是咱们自己写的一个函数。 2. 创建对象)

           ☞  在使用自定义构造函数创建对象的时候,也需要使用关键字 new

           备注:
                1. 普通的函数遵守驼峰命名法
                2. 构造函数遵守帕斯卡命名法


           例如:
            
           // 通过自定义构造函数创建对象
           function People(name, age, gender) {
                
                this.userName = name;
                this.userAage = age;
                this.userGender = gender;

                this.run = function() {

                     alert(this.userName +'正在跑步运动中...');
                }
           }

           // 使用该自定义构造函数创建对象
           var zs  = new People('张三', 18, '男');
           var ls = new People('李四', 22, '女');


           console.log(zs, ls);



           自定义构造函数总结:

                  1. 在构造函数中返回值可以省略不写

                  2. 构造函数中的this关键字,谁调用该构造函数,this就指向谁。

                  3. 如果批量创建对象,那么推荐使用自定义构造函数

                  4. 如果程序中只是简单的创建个别几个对象,那么可以使用字面量直接创建

获取对象中的值:

     ✔  对象名.键的名字  

     ✔  对象名['键的名字']


     备注:
         1. 如果要获取属性的值,那么直接   对象.属性名
         2. 如果要获取方法的值,那么直接   对象.方法名()

给对象赋值:

     ✔ 直接在定义对象的时候,以键值对的方式给对象赋值

     ✔ 通过   对象名.自定义键名  =  值;

     ✔ 通过   对象名['自定义键名']  =  值;


注意:
     1. 对象中保存数据格式是以键值对格式保存的  :   键:值

     2. 在对象中用来描述对象基本特征的: 叫属性(名词)
        在对象中用来描述对象的行为: 叫方法(是一个函数)

☞ 遍历对象: 通过循环的方式找到对象中的每一个值。

  ☞ 语法:
     
     for( 键  in  对象 ) {

          对象[键]
     }

  例如:
     var obj = {
          username :  '张三',
          userage : 20,
          usergender : '男'
     }

     for( key in obj ) {
        
        console.log(key + ':'+ obj[key]);
     }

对象总结:

 1. 能够使用四种方式创建对象

 2. 能够给创建的对象赋值

        对象.键   =  值;
        对象['键']  = 值;

 3. 获取对象中的值

        对象.键;

        对象['键'];

 4. 遍历对象

      for( key  in 对象) {

            对象[key]
      }

 5. new :  通过调用构造函数创建对象(实例化)

 6. this : 谁调用构造函数,this就指向谁。

 7. 
      对象中的属性: 对象中的属性就是用来描述对象基本特征(名词)

      对象中的匿名函数 : 对象中的方法


 8.  typeof       ====>  获取当前变量的数据类型

     instanceOf   ====》 判断当前对象是通过哪个构造函数创建的

其他扩展部分:

 1. 简单数据类型: 在栈上存储  

      简单数据类型在栈保存的就是一个具体值

 2. 复杂数据类型: 在堆上存储

      ✔ 首先在对上开辟一块空间  ---- 生成内存地址

      ✔ 将内存地址保存到栈上


 3. 内置对象:js原生的对象。通过查MDN手册,去使用提供的属性及方法。
 
      https://developer.mozilla.org/zh-CN/

      var  ary = new Array();
      var  ary = [];


     ☞ 与数学运算相关的内置对象  Math

        Math.PI    ----》 用来获取圆周率

        Math.round(值)   ----> 对一个数字进行四舍五入 (得到的是一个整数)

        Math.abs(值)     ----> 获取一个数字的绝对值

        Math.max(值,值)   -----> 获取一组数字中的最大值

        Math.min(值,值)   -----> 获取一组数字中的最小值

        Math.pow(x,y)     -----》 获取 x 的 y 次 方


      ☞ 与数组对象相关的方法或属性

           1. 通过构造函数创建对象

             var  ary = new Array();

           2. 通过字面量方式创建对象

             var   ary  = [];


           3. 获取数组的长度     ary.length

           4. 方法:

                Array.isArray(ary)      判断一个变量是不是数组,返回 true 或者  false

                数组对象名.push(值);      给数组赋值,把值赋值给数组的末尾

                数组对象名.unshift(值);   给数组赋值,把值赋值给数组的开始


                数组对象名.pop() 		// 获取数组中最后一个数字,并返回该数字
               数组对象名.shift()       // 从数组中第一个值开始获取,返回该数字


                数组对象名.reverse()    // 将数组翻转   

                数组对象名.join方法('|')   // 返回的是一个字符串


                indexOf(字符)  // 用来获取数组中对应字符的索引位置,如果包含该字符那么就返回其对应的索引位置,如果不包含该字符,那么就返回 -1;

           5. 字符串方法

                ☞ 字符串特性: 不可变性。

                ☞ 属性

                     字符串变量.length    ====》 获取字符串长度

                
                ☞ 方法:

                indexOf(字符)        ===》 或字符在字符串的索引位置(如果有直接返回索引位置),如果没有返回-1
                
                lastIndexOf(字符)


                replace(a,b)  // 用b替换a


                1. concat()              //拼接字符串  等效于 +

                2. slice(strat,end)       //从指定位置开始,截取字符串到结束位置,end值取不到

                3. substring(start,end)   //从指定位置开始,截取字符串到结束位置, end值取不到

                4. substr(start,length)  //从哪个位置开始,一共要截取多少个
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别动我代码儿

感谢技术精进的你,加油不负韶华

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值