javaScript知识世界

JavaScript概念:

是一种表述语言,也是一种给予对象和事件驱动(EventDriven)的,安全性好的脚本语言,

运行在客户端,从而减轻服务器端的负担。

一。了解js

        1.在一个网页里面有三部分   

            1.  html  表示结构

            2.  css   表示样式

            3. JS    表示行为

         2.JS的书写方式分为三种   

               1. 行内式(强力不推荐)

               2.内嵌式(方便使用)

               3. 外链式(推荐)

          3. JS的输出语句  

                1.alert()                      以浏览器弹出层的形式展示内容

                2.console.log()           在浏览器控制台中打印你需要输出的内容

                3.document.write()     在页面中直接写入你要输出的内容

二。变量

1. 变量的命名规范和命名规则

        1.规则:你必须遵守,不然就会报错

        1.1 一个变量只能有数字(0-9) 字母(a-zA-Z) 美元符($)  下划线(_)  组成

        1.2 一个变量不能有数字开头

        1.3 在JS中严格区分大小写   比如说  num Num nUm nuM 等等都不是同一个变量

        1.4 不能使用关键字或者保留字

                关键字:现在JS语法中正在使用的关键字(比如说var)

                 保留字:现在JS还没用  但是将来可能会用


 

        2.规范:建议你去遵守,因为大家都这样

             2.1 不要使用中文命名

             2.2 变量命名应该语义化

             2.3 驼峰命名法  当一个变量是由多个单词组成的时候  第二个单词开始 首字母大写

        3.变量的赋值和变量的初始化

                1.声明一个age的变量

                2.把值赋值给声明的变量

                3.输出结果

                4.变量的初始化  声明一个变量的同时并且给声明的变量赋值就叫做变量的初始化

 //1.声明一个age的变量
        var age;
        //2.把值赋值给声明的变量
        age = 18;
        //3.输出结果
        console.log(age);
        //4.变量的初始化  声明一个变量的同时并且给声明的变量赋值就叫做变量的初始化
        var myname = '张三丰';
        console.log(myname);

         4.交换两个变量(交换左手和右手两个变量)

理念:

               1.我们需要声明一个为空数据的临时变量开帮助我们 (temp)

               2.先把变量apple1中的数据放在临时变量里面

               3.在把变量apple2中的数据放在变量apple1中

                4.最后把临时变量temp中的数据赋值给变量apple2

//1.我们需要声明一个为空数据的临时变量开帮助我们 
        var temp;
        var apple1 = '我是变量一中的青色苹果@@@@@@@';
        var apple2 = '我是变量二中的红色苹果%%%%%%%';
        //2.先把变量apple1中的数据放在临时变量里面
        temp = apple1;
        //3.在把变量apple2中的数据放在变量apple1中
        apple1 = apple2;
        //4.最后把临时变量temp中的数据赋值给变量apple2

                 

5.JS的数据类型

         JS把一个变量可以存储的各种各样的数据,做了一个区分   分成两个类型

         1.基本数据类型(简单数据类型)

                  1.1 Number 数值型

                  1.2 String 字符串型

                  1.3 Boolean 布尔型

                  1.4 Undefined 未定义

                  1.5 Null      空

         2.复杂数据类型(地址数据类型/引用数据类型)

                    2.1 Object    对象

                   .2 Function  函数

    6.js种特殊的数值

      1.  js中数值的最大值

                 console.log(Number.MAX_VALUE);

      2.  js中数值的最小值 采用的是科学计数法

                  console.log(Number.MIN_VALUE);

        3.无穷大

                  console.log(Number.MAX_VALUE * 2);

       4. 无穷小

                       console.log(-Number.MAX_VALUE * 2);

      5.  非数值NaN  Not a Number 的简写   

                       console.log('猪猪侠' - 100); //计算机也不知道猪猪侠减去100是个啥;反正不是数值

      7.isNaN()

            isNaN()用来判断一个变量不是一个数字是否成立   成立返回false  不成立返回true,   

                 //如果是数字,判断有误,返回一个错false;假的赝品

                //如果不是数字,判断正确,返回一个true;真的本尊

         

  示例:

            var userName = '张三丰';

                      console.log(isNaN(userName)); //true  张三丰是非数字

                      var userAge = 18;

                      console.log(isNaN(userAge)); //false  18不是非数字

  8.typeof检测数据类型

   1.typeof 可以用来检测变量中存放的值属于哪种数据类型

        两种用法:

         方法一:  typeof 变量

         语法:   typeof 后面跟上要检测的变量

        返回值结果:以字符串的形式给你的变量数据类型

        方法二:  typeof(变量)

        语法:typeof(要检测的变量)

        返回值结果:以字符串的形式给你变量的数据类型

2.两种变量的区别

        1.typeof只能检测紧跟着的一个变量

         2.typeof()先去运算小括号里面的结果  然后使用typeof去检测运算结果的数据类型

        3.如果你只是检测一个变量的数据类型   用哪一个都一样    但是如果你想检测一个表达式的数据类型 答案不一样

       

3.typeof 的返回值

    !!!   注意  typeof的返回值是一个字符串

        当两个以及以上typeof连用的时候 一定得到string

        typeof只能够检测基本数据类型

        检测数值        返回number

        检测字符串      返回string

        检测布尔        返回boolean

        检测undefined  返回undefined

         检测null       返回object

示例:

 // 验证区别的实例
        // 1.需求:我想计算100+200的结果的数据类型
        var n1 = 100;
        var n2 = 200;
        var res3 = typeof n1 + n2;
        // var res3 = 'number' + n2;
        console.log(res3);
        // 这是怎么运算的呢?   首先他先是计算typeof n1  然后用typeof n1的结果去和n2进行加法运算
        // 最后的结果就是number200    首先typeof n1的结果是number  不过是一个字符串类型的number  之后和后面的n2拼接
        // 结果就是number200


        // var res4 = typeof(n1 + n2);
        // console.log(res4);
        // 结果就是number   所以你能够得到两个不同的结果  
// 2.typeof连用
        var n4 = 100;
        // console.log(typeof n4);
        // 从右向左进行运算
        // 先计算2号typeof检测n4的结果  应该是number    但是返回值一定是一个string
        // 在计算1号typeof检测typeof n4的结果    也就是typeof number   所以结果就是string
        console.log(typeof typeof n4);
        // console.log(typeof 'number');

9.其他数据类型转换数字型

      1.parseInt(变量)     取整

console.log(parseInt('3.1415')); //取整数 3 没有四舍五入
        console.log(parseInt('4.98')); //4

        console.log(parseInt('120pxrem'));//120
        console.log(parseInt('rem120px')); //NaN

      2.parseFloat(变量)    浮点小数

   console.log(parseFloat('3.1415926')); //3.1415926
        console.log(parseFloat('3.98')); //3.98
        console.log(parseFloat('120pxrem')); //120
        console.log(parseFloat('rem120px')); //NaN

3.Number(变量)

   var str = "123456";
        console.log(Number(str));
        //或者直接把字符串写在Number()的括号里
        console.log(Number('3.1415926'));


        var str2 = 'abc';
        // abc我没有办法给你转换成一个合法的数字
        // 但是你又非得让我给你转换为数字   我自己转不了  所以我只能够给你转换为数值类型
        // 但是告诉你是非数字   所以结果就是数值类型的非数字 NaN
        var res2 = Number(str2);
        console.log(res2); //NaN

4. 非加法的数学运算

            a*1    这样既不改变变量的大小   又能够实现数值的转换
            a/1    这样既不改变变量的大小   又能够实现数值的转换
            a-0    这样既不改变变量的大小   又能够实现数值的转换
        console.log('12' - 0);
        console.log('12' / 1);
        console.log('12' * 1);
        console.log(true * 1); //也就是1*1

10.其他类型转换字符串类型

1.利用String(变量)   这个函数强制转换    任何数据类型都能够转换

2. 变量.toString()     undefined 和 null  不能够转换

  var num = 1000;
        var b1 = true;
        var u;
        var nu = null;
        console.log(num.toString());
        console.log(b1.toString());
         console.log(u.toString());//报错
        console.log(nu.toString());//报错

   3.利用加号拼接字符串的方法实现转换效果

       在JS里面,加号(+)  有两个意义

           1.进行字符串的拼接

              只要符号任意一边是字符串的时候,就是字符串拼接

          2.进行数学运算

             只有两边都是数字或者布尔的时候,会进行数学运算         

             

11.其他类型转换布尔类型

   使用Boolean() 函数

        语法:Boolean(你要转换的数据)

         返回值:转换好的数据

         特点:

           在JS里面只有五个内容转换为false   代表空 否定的值都转换为false  

                   空字符串 '' 

                    0 

                    NaN 

                    null 

                    undefined

                    其他所有的内容都转换为true

三。运算符

1.数学运算符

    1.  +  

            有两个含义  

            字符串的拼接

             数学运算

     2.  -

     3.  *

      4.  /

      5.  %

            取两个数的余数

            被除数/除数=商......余数

            得到不能被整除的部分

            取余使用的是百分号%

       6.  **  取幂

             a**b   就是a的b次方

2.赋值运算符

 1. =     
        //        赋值:把等于号右边的赋值给左边的变量  
        //  2. +=
        //        这个是加法和赋值的合作
        //        a+=b   等价于 a=a+b   注意顺序一定不能写反了  就是自己在自己的基础上叠加
        //        因为你在计算数的时候是一样的  a+b  和  b+a 没区别
        //        但是字符串在拼接的时候谁在前面谁在后面就有区别了
        //  3. *=
        //        这个是乘法和赋值的合作
        //        a*=b    等价于 a=a*b
        //        在自己的基础上进行叠加
        //  4. /=
        //  5. %=
        //  6. -=
        //  =             直接赋值             var num=10;
        //  += -=         加减一个数后再赋值    var age=10;    age+=5;   console.log(age)
        //  *= /=  %=     乘等  除等 取模赋值   var age=2;     age*=5;   console.log(age)

3.比较运算符

  两个数据进行比较的符号

          1. >

             左边大于右边  得到true

             左边不大于右边  得到false

          2. <

               左边小于右边  得到true

               左边不小于右边  得到false

          3. >=

              左边大于或者等于右边 得到true

              左边小于右边    得到false

          4. <=

                 左边小于或者等于右边 得到true 

                 左边大于右边  得到false

          5. ==

                比较两边的数据值是不是相等,不管数据类型

          6. ===

                 比较两边的数据是不是相等  值和数据类型都要比较

          7. !=

                比较两边的数据值是不是不等  不管数据类型

          8. !==

               比较两边的数据是不是不等   值和数据类型都要比较

               值不一样那可定是true  当数据类型不一样的时候  那就是true  不再管值了

4.逻辑运算符

              逻辑与  && and 

              逻辑或 || 

              逻辑非 !

 总结   1. 逻辑与&&  两边都是true 才返回true     只要有一边是false那就返回false

           2. 逻辑或 ||  两边都是false才返回false   两边只要有一边是true那就返回true

           3. 逻辑非  ! 也叫作取反符  用来取一个布尔值相反的值  ,如果为true那就返回false 如果为             false 那就返回true

5.递增运算符

1.前置递增运算符  ++num 前置递增 自加1,类似于num=num+1;但是++num写起来更加简单

                  使用口诀:先是自加1,将结果返回给++变量   

2.后置递增运算符

                把++放到我们变量的后面num++ 类似于num=num+1,但是num++写起来更加的简单,实现的效果和前置是一样的,每次让这个变量自动加上1

                后置自增口诀是:先返回值,变量自加1

6.运算符优先级

          优先级       运算符        顺序 

            1         小括号         ()

            2         一元运算符     ++   --   !

            3         算术运算符     先*  /   %   再+  -

            4         关系运算符     >   >=   <   <=

            5         相等运算符     ==   !=       ===    !==

            6         逻辑运算符     先逻辑与&& 再逻辑或 ||

            7         赋值运算符     =

            8         逗号运算符     , 声明多个变量用逗号隔开

           总结   一元运算符里面的逻辑非 ! 优先级很高

              逻辑与比逻辑或优先级高

四。流程控制

       

 1.if语句

      四种书写方式

          1-1. if(条件){要执行的代码}

                当条件满足的时候(也就是表达式为true)的时候  执行大括号里面的代码

                当条件不满足的时候(也就是表达式为false)的时候  不执行大括号里面的代码

          1-2. if(条件){要执行的代码} else {要执行的代码}

                当条件满足的时候 执行if后面大括号里面的代码

                当条件不满足的时候 执行else后面大括号里面的代码

         1 -3. if(条件1){ 条件1要执行的代码} else if(条件2){条件2要执行的代码}

                从第一个开始 哪一个条件满足了  就执行哪一个{}里面的代码

                如果前面的满足了 那么后面的就都不执行了

                若干个大括号 最多只能够执行一个

         1-4. if(条件1){条件1要执行的代码} else if(条件2){条件2要执行的代码} else{所有的条件都不满足的时候执行的代码}

                从第一个开始  满足哪一个条件  执行哪一个大括号里面的代码

                前面的满足了  后面的就都不执行了

                所有的条件都不满足的时候  执行else里面的代码

               若干个大括号   必然会执行其中的一个

案例

 //首先弹出一个输入框,要求用户输入一个年份,如果是闰年,就弹出闰年,如果不是闰年,就弹出平年
        //什么是闰年:能够被4整除并且不能被100整除的数为闰年 或者能够被400整除的是闰年   
        //案例分析
        //1.弹出一个prompt输入框,让用户输入年份,把这个值取过来保存起来到变量中,
        //2.使用if语句判断是否为闰年,如果是闰年,就执行if大括号里面的语句弹出闰年 否则执行else里面的语句弹出平年
        //3.一定要注意这里面有逻辑与&& 还有逻辑或||同事判断整除的方法是取余为0
        var year = prompt('请你输入年份:');
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            alert('你输入的是闰年');
        } else {
            alert('你输入的是平年');
        }

2.三元运算符

1.三元运算符语法结构:  条件表达式?表达式1:表达式2

2.三元运算符执行思路:如果条件表达式结果为真,就返回表达式1的值 如果表达式结果为假,就返回表达式2

案例

        var num = 20;
        var result = num < 15 ? '呵呵呵' : '哈哈哈';
        alert(result);

3.switch多分支语句

 switch语句也是条件分支语句的一种

                 case 情况1:   

                         情况1执行语句1;

                          break;

                   case 情况2: 

                          情况1执行语句2;

                          break;

                   case 情况3:            

                          情况3执行语句3;

                         break;

                  default:  

                     所有的条件都不满足的时候执行最后的语句;

             } 语法结构

             switch(要判断的变量){}

案例

        var n = 18;
        switch (n) {
            case 18:
                console.log('我已经成年了');
                break;
            case 17:
                console.log('我还是未成年');
                break;
            default:
                console.log('请输入一个数值');
        }

        console.log('后续代码');

五。循环

1.循环成立的条件

           1.初始值  作为循环的开始

           2.条件判断 决定要不要继续执行

           3.要重复执行的代码

           4.改变初始值  为了让循环有结束

2.whlie循环

     1.  whlie语法


      // while 循环
        //1. 初始化
          var n = 1;
             //只要n<=3 得到的结果是true   那么后面的代码就会执行
       // 2.条件判断
          while (n <= 3) {
            // 重复执行的代码
            console.log('我错了');
            // 改变初始值
            n = n + 1;
        }
           console.log('后续代码')

2.案例:通过循环计算1~10的和

       // 1.准备一个变量 用于接收叠加的结果
        var sum = 0;
        // 2.准备一个循环的初始化变量
        var n = 1;
        // 3.循环语法
        while (n <= 10) {
            // console.log(n);
            // 4.要重复执行的代码
            // 把每一个数字叠加到变量num上
            sum += n;
            // 5.初始值改变
            n++;
        }

        // 最后输出一下sum  那这个sum就是叠加了所有数字的和
        console.log(sum);

3.do whlie循环

   1.do whlie语法

       // do while  
        //     也是我们循环语句的一种
        //     语法
        //       do{
        //           要重复执行的代码
        //       }while(条件)

do while 和 while语句的区别

             不管条件是不是成立 do while  都会先执行一遍

              他们两个只在第一次条件不成立的时候会有区别

案例

      // 同样的代码我们使用do while语句执行一下看一下
        var n = 8;
        do {
            console.log('我被执行了');
            n++;
        } while (n < 10)
        console.log('后续代码');

4.for循环

for语法

        var i = 0;
        for (; i < 10;) {
            重复执行的代码
            i++
         } 

案例:打印100小星星

 for (var i = 1; i <= 100; i++) { //i   index索引号
            console.log('☆');
        }

5.水仙花数

求水仙花数字

        他也叫做三次自幂数  什么叫做三次自幂数

 也就是一个数字的每一位的三次方之和,如果和这个数字一样就是三次自幂数

              思路

                  1.循环得到100 ~ 999 的每一个整数

                   2.把每一个数字都拆开

                   3.判断是不是三次自幂数

     // 1.循环
        for (var i = 100; i <= 999; i++) {
            // 2.拆数字    举个例子 562
            // 拆百位数字
            var a = parseInt(i / 100);
            // 拆开十位数字
            var b = parseInt(i % 100 / 10);
            // 拆开个位数字
            var c = parseInt(i % 10);
            // 3.判断是不是三次自幂数   之前咱们说过一个知识点     a**b   就是a的b次方   所以我们可以将a*a*a   写成a**3
            if (a ** 3 + b ** 3 + c ** 3 === i) {
                console.log(i + '是三次自幂数');
            }
        }

打印正三角形案例

核心思路:外层循环跟平常一样写  var i=1;i<=10;i++

                           内层循环不一样       var j=1;j<=i;j++

        var str = '';
        for (var i = 1; i <= 10; i++) {
            for (var j = 1; j <= i; j++) {
                str = str + '★';
            }
            str = str + '\n';
        }
        console.log(str);

六。数组

1.数组的使用

1.数组(Array):就是一组数据的集合,存储在单个变量下的优雅方式

2.利用new创建数组

3.利用数组字面量创建数组 [] 

4.我们数组里面的数据一定要用逗号分隔

5.我们数组里面的数据 比如1 2 我们称为数组元素

6.获取数组元素 格式  数组名[索引号] 索引号从0开始   0 1 2 3 

2.数组案例

        定义一个数组,里面放置星期一,星期二,星期三,一直到星期日,共

      var arr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'];

        console.log(arr);

7天,在控制台输出星期日

3.遍历数组:就是把数组中的元素从头到尾访问一次

     
        var arr = ['张三', '李四', '王麻子', '杨洋'];
        for (var i = 0; i < arr.length; i++) {
            console.log(arr[i]);
        }

4.数组总结

         1.什么是遍历数组  :就是把我们的数组从头到尾访问一次,称为遍历

         2.通过什么来遍历数组里面的元素:for循环可以实现这个效果

         3.for里面的i是什么,当什么使用?for里面的数组元素怎么写:

          for里面的i是计算器,当做索引号使用,arr[i]是数组元素第i个数组元素

         4.怎么获取数组的长度:length

         5.数组索引号和数组的长度的关系:没有关系,数组索引号是从0开始的,数组的长度就是你有多少个元素

         比如我有7个数组元素,数组长度就是7,索引号是从0开始的到6 所以他们没有关系

5.数组的最大值

案例

       1.声明一个保存最大值的变量max

       2.默认最大值就是取数组中的第一个元素

       3.遍历这个数组,把里面的每个数组元素和max相比较

       4.如果这个数组元素大于max就把这个数组元素保存到max里面,否则继续下一轮比较

       5.最后输出这个max即可

        var arr = [2, 6, 1, 77, 52, 25, 7, 102, 89, 98, 253];
        var max = arr[0];
        for (var i = 0; i < arr.length; i++) {
            // console.log(arr[i]);
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        console.log('这个数组的最大值就是:' + max);

6.新增数组元素方法

1. 通过修改length长度  增加空元素

        var arr = ['关羽', '张飞', '刘备', '诸葛亮'];
        console.log(arr.length); //4
        arr.length = 7; //把我的数组长度改为7,里面应该有7个数组元素  本来就4个,强制改 
         成7,就会在原来基础上加上3个空元素
        console.log(arr); //['关羽', '张飞', '刘备', '诸亮','empty','empty','empty'];
        console.log(arr[4]); //新增的空元素只是声明了,没有给赋值,所以就是undefined
        console.log(arr[5]); //新增的空元素只是声明了,没有给赋值,所以就是undefined
        console.log(arr[6]); //新增的空元素只是声明了,没有给赋值,所以就是undefined

2.通过修改索引号 追加数组元素  增加或者替换实体元素

       var arr1 = ['关羽', '张飞', '刘备', '诸葛亮'];
        console.log(arr1); //['关羽', '张飞', '刘备', '诸葛亮']
        arr1[4] = '赵云';
        console.log(arr1); //索引号没出现的叫做追加元素/['关羽', '张飞', '刘备',诸葛亮','赵云']
        arr1[5] = '马超';
        console.log(arr1); //索引号没出现的叫做追加元素
        arr1[0] = '曹操';
        console.log(arr1); //索引号出现的叫做替换
        arr1 = '三国混战';
        console.log(arr1); //千万不要直接给数组名字赋值,否则里面的数组元素都没有了

7.反转数组

      //将数组['关羽','张飞','赵云','马超','诸葛亮']的内容反过来存放
      // 1.声明一个新数组 newArr
      //2.把旧数组的索引号第5个取过来(arr.length-1),给新数组索引号第0个元素(newArr.length)
        //3.我们采取递减的方式   i--
 var arr = ['关羽', '张飞', '赵云', '马超', '诸葛亮', '曹操'];
        var newArr = [];
        for (var i = arr.length - 1; i >= 0; i--) {
            newArr[newArr.length] = arr[i];
        }
        console.log(newArr);

七。函数

1.了解函数

1. 在JS里面

           函数就相当于一个盒子

           用来承载一段代码  当你需要执行这一段代码的时候

           只需要呼唤这个盒子就可以了

           实际上就是对一段代码的封装 

   

        2.函数的概念:

        在js里面,可能会定义非常多的相同的代码或者功能相似的代码,这些代码可能需要大量重复使用。虽然for循环语句也能够实现一些简单的重复操作,但是也有局限性,此时我们可以使用js中的函数

        函数:就是封装了一段可以被重复执行调用的代码块,

        目的:就是让大量代码重复使用

        2.函数使用

        

 //函数体验
        1.声明函数
        function sayHi() { //驼峰命名法
            console.log('Hi~~~');

        }

        //2.调用函数
        sayHi();

 注意事项:1.function是声明函数的关键字   全部小写

                   2.函数是做某一件事情,函数名一般是动词 sayHi  getSum

                   3.函数不调用自己不执行   class='box'   .box

案例

        //利用函数的封装求1-100之间的累加和
        //1.声明函数
        function getSum() {
            var sum = 0;
            for (var i = 1; i <= 100; i++) {
                sum += i;
            }
            console.log(sum);
         }
          //2.调用函数
             getSum();

3.函数参数

 在JS里面

             函数的参数分为两种

               1.形参

                 => 写在函数定义阶段的小括号里面

                 => 就相当于一个只能够在函数内部使用的变量

                 => 起名遵循变量命名规则和规范

                 => 值由函数的实参来决定

               2.实参

                 => 写在函数调用阶段的小括号里面

                 => 就是一个准确的值 是为了给函数的形参进行赋值的

               ->形参和实参 都可以写多个

                 => 多个的时候,中间使用逗号(,) 分割

                 => 多个的时候, 是按照从左到右的顺序一一对应的    顺序不能够乱

               +函数每一次的调用

                 形参的值都有本次调用的时候传递的实参决定

4.函数总结

         函数可以带参数,也可以不带参数

        声明函数的时候,函数小括号里面是形参,形参的默认值为undefined

        调用函数的时候,函数小括号里面是实参,

        多个参数中间使用逗号分隔

        形参的个数和实参的个数可以不匹配,结果都不一样,我们尽量要求他们相匹配

5.函数返回值

return

               他是函数的返回值 我们也叫做结果

               在函数内部使用return关键字

               =>return关键字后面的内容

               =>就是这个函数的返回值

               =>也就是你执行函数后得到的结果

下面我们写一个函数来实验一下

    function fn() {
            return 123;
        }
        // 当你调用的fn函数的时候  
        var res = fn();
        // 等这个fn() 函数执行完     这个fn()表达式的结果就是123   我们声明一个变量res接收一下这个fn()表达式的结果
        console.log(res);
        // 那你在这return的是什么  我们后面res代表的是什么   比如你return  true  那最后res代表的就是true  你return的是一个字符串  
        // 那这里res代表的就是你好 世界

6.arguments参数使用

       1.什么是arguments   arguments是函数所独有的内置对象  它的展示形式就是一个伪数组

       2. 做什么用          里面存放了用户传递过来的所有实参

        3.什么情况下使用:   当我们也不知道用户到底传多少个实参的时候,就用arguments 

       4. 有了arguments,我们不需要再去写形参了,这就是arguments

八。对象

1.了解对象数据类型

1.       对象 也是一个复杂的数据类型   叫做Object

2.对象的创建方式

          1.字面量创建

                => var o={}

          2.内置构造函数创建

            =>JS给我们提供了一个内置构造函数叫做 Object

            => var o=new Object()   

3.两种创建对象方式的区别

         1.字面量创建可以在创建的同时直接向对象里面添加一些数据

            =>数据是以键值对的方式出现的

            =>key:value 的形式

            =>key就是这个数据的名称

            =>value就是这个数据的值

            =>多个数据之间使用 逗号 (,)分隔

         2.内置构造函数目前我们不好直接添加成员

           =>直接创建一个空对象

           =>后期我们通过对象的操作语法来进行增删改查

2.利用对象字面量创建对象

1.创建对象

        var obj = { //字面量毛豆
            uname: '张三丰',
            age: 18,
            sex: '男',
            sayHi: function() {
                console.log('你好啊小妹妹');
            },
            hair: 'white'
        };

  2.使用函数

 (1)调用对象的属性  我们采取 对象名.属性名  .我们理解为的

 (2).调用属性还有一种方法 对象名['属性名']

 (3)调用对象的方法 sayHi 对象名.方法名()   千万别忘记了添加小括号

3.利用new Object创建对象

示例:

       var obj = new Object(); //这里创建一个空对象
        obj.uname = '张三丰'; //等分
        obj.age = 18;
        obj.sex = '男';
        obj.sayHi = function() {
            console.log('小可可,要开心');

        };
        //注意 (1)我们是利用等号赋值的方法 追加对象的属性和方法
        //     (2)每个属性和方法之间用分号结束
        //在调用对象的时候是一样的方法
        console.log(obj.uname);
        console.log(obj['sex']);
        obj.sayHi();

4.利用构造函数创建对象

示例:

    function Star(uname, age, sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function(sang) {
                return sang;

            }
        }
        var ldh = new Star('刘德华', 18, '男'); //调用构造函数返回的是一个对象
        console.log(ldh);
        console.log(typeof ldh);
        console.log(ldh.name);
        console.log(ldh['sex']);
        console.log(ldh.sing('冷冷的冰雨往脸上胡乱地拍'));

5.new关键字的执行过程

        1.  遇见new关键字 构造函数可以在内存中创建了一个空对象

        2.  this 就会指向刚才创建的空对象

        3.  执行构造函数里面的代码 给这个空对象添加属性和方法

        4.  返回这个对象

 new在执行的时候会做四件事情                                 

        1.在内存中创建一个空对象                                   

        2.让this指向在这个新的对象                                  

        3.执行构造函数里面的代码 给这个新对象添加属性和方法            

        4.返回这个新对象(所以构造函数里面不需要return)    

示例:

   function Star(uname, age, sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function(sang) {
                return sang;

            }
        }
        var ldh = new Star('刘德华', 18, '男');
        console.log(ldh);
        console.log(ldh.name);
        console.log(ldh['age']);
        console.log(ldh.sex);
        console.log(ldh.sing('你会不会爱上我'));

6.对象小结

        1.对象可以让代码结构更加清晰

        2.对象是复杂数据类型Object   

        3.本质:对象就是一组无序的相关属性和方法的集合

        4.构造函数泛指一大类,比如苹果,不管是红苹果还是绿苹果,都统称为苹果

        5.对象实例特指一个事物吗,比如这个苹果,

        6.for..in 语句用于对对象属性进行循环操作

         for(var k in ldh){

             console.log(k);

             console.log(ldh[k]);


 

        // }

九。内置对象

1.JS创建字符串有两种方式

      1.字面量创建

               var str = 'hello world';

       2.内置构造函数创建

              var str=new String('hello world');  

2.字符串的常用方法

  // 1. charAt()         [不常用]
        //   => 语法: 字符串.charAt(索引)
        //   => 返回值: 获取该索引位置的字符       
        //         他分为有和没有  假如一个字符串长度是5 你获取索引位置为3肯定有   你获取索引位置100肯定没有 
        //     -> 如果有该索引位置, 就是索引位置字符
        //     -> 如果没有该索引位置, 是一个空        照样输出  但是什么也没有

        // 2. charCodeAt()       [不常用]
        //   => 语法: 字符串.charCodeAt(索引)
        //   => 返回值: 获取该索引位置的字符的字符编码(UTF-8编码)   
        //         因为我们在网页上用的是utf8字符集  我们应该拿的是二进制    但是是以10进制形式输出的   所以最后是十进制表示的字符编码


        // 总结:前两种方式不常用  作为了解   因为第二种你想获取某个字符的字符编码基本用不到   
        //       第一种你想获取字符串里面某一个字符  我们可以通过str[索引] 形式也可以


        // 3. substr()
        //   => 语法: 字符串.substr(开始索引, 截取多少个)
        //   => 作用: 截取字符串
        //   => 返回值: 截取出来的字符串

        // 4. substring()
        //   => 语法: 字符串.substring(开始索引, 结束索引) - 包前不包后
        //   => 作用: 截取字符串
        //   => 返回值: 截取出来的字符串

        // 5. toLowerCase()
        //   => 语法: 字符串.toLowerCase()
        //   => 作用: 把字符串里面的大写字母转成小写字母
        //   => 返回值: 转换好以后的字符串

        // 6. toUpperCase()
        //   => 语法: 字符串.toUpperCase()
        //   => 作用: 把字符串里面的小写字母转换成大写字母
        //   => 返回值: 转换好以后的字符串

        // 7. replace()
        //   => 语法: 字符串.replace('要被替换的字符', '替换成的字符')
        //   => 作用: 替换字符串内的某些字符
        //     -> 只能替换查找到的第一个     如果找不到要被替换的字符   他就什么也不替换  原样输出就可以了
        //   => 返回值: 替换好的字符串

        // 8. concat()     这个方法和数组同名   字符串也有     这个方法也不常用  因为我用他不如用加号  加号拼接更加好用
        //   => 语法: 字符串.concat(字符串)
        //   => 作用: 拼接字符串
        //   => 返回值: 拼接好的字符串

        // 9. slice()
        //   => 语法: 字符串.slice(开始索引, 结束索引) - 包前不包后
        //     -> 和 substring 的区别就是可以写 负整数
        //     -> 当你写负整数的时候, 表示 length + 负整数
        //   => 作用: 截取字符串
        //   => 返回值: 截取好的字符串

        // 10. split()
        //   => 语法: 字符串.split('切割符号', 多少个)
        //     -> 切割符号, 按照你写的符号把字符串切割开    就是分割开
        //       + 如果不写, 那么就直接切割一个完整的
        //       + 如果写一个空字符串(''), 按照一位一位的切割
        //     -> 多少个, 选填, 默认是全部, 表示你切割完以后保留多少个
        //   => 返回值: 一个数组的形式保存每一段内容
        //     -> 不管按照什么切割, 返回值一定是一个数组
  // 11. indexOf()
        //   => 语法:
        //     1. 字符串.indexOf(字符串片段)
        //     2. 字符串.indexOf(字符串片段, 开始索引)
        //   => 作用: 在字符串里面查找指定字符串片段
        //   => 返回值:
        //     -> 如果查询到了, 就是指定索引
        //     -> 如果没有, 就是 -1
        //       跟数组的使用方法差不多  只不过我们数组是查询一个数据  每一个位置就放一个数据  但是字符串你可以查询一个片段

        // 12. lastIndexOf()
        //   => 语法:
        //     1. 字符串.lastIndexOf(字符串片段)
        //     2. 字符串.lastIndexOf(字符串片段, 开始索引)
        //   => 作用: 从后向前查找对应的字符串片段
        //   => 返回值
        //     -> 如果查询到了, 就是指定索引
        //     -> 如果没有, 就是 -1

        // 13. includes()
        //   => 语法: 字符串.includes('字符串片段')
        //   => 作用: 判断字符串里面是否包含该字符串片段
        //   => 返回值: 布尔值
        //     -> 有就是 true
        //     -> 没有就是 false

        // 14. search()
        //   => 语法: 字符串.search('字符串片段')
        //   => 作用: 查找字符串里面有没有匹配的字符串片段
        //   => 返回值:
        //     -> 如果有, 就是指定索引
        //     -> 如果没有, 就是 -1
        //   => 和 indexOf 的区别
        //     1. 没有第二个参数  只能欧股从左往右开始查找
        //     2. search 参数可以写正则(咱们现在还没有学正则   知道就行   之后我们学习的时候再说)

        // 15. match()     我们现在学习有点早  基本上用不到这个方法
        //   => 语法: 字符串.match('字符串片段')
        //   => 作用: 找到字符串里面的字符串片段
        //   => 返回值: 是一个数组
        //     -> 里面是找到的字符串片段
        //   => 实际应用:
        //     -> 不是传递字符串   
        //     -> 传递正则    
        //       比如说你去字符串里面找一个字符 a      他有10个a
        //       你只能够找到满足条件的第一个  但是如果你使用正则  就可以找到字符串里面全部的a  
        //       但是这个方法有一点早 咱们先知道有这么一个东西    以后在细讲

        // 16. trim()
        //   => 语法: 字符串.trim()
        //   => 作用: 去除首尾空格
        //   => 返回值: 去除空格以后的字符串

        // 17. trimStart()
        //   => 语法: 字符串.trimStart()
        //   => 作用: 去除开始的空格
        //   => 返回值: 去除空格以后的字符串
        //   => 别名: trimLeft()

        // 18. trimEnd()
        //   => 语法: 字符串.trimEnd()
        //   => 作用: 去除尾部空格
        //   => 返回值: 去除空格以后的字符串
        //   => 别名: trimRight()

        // 19. padStart()
        //   => 语法: 字符串.padStart(目标长度, '填充字符串')
        //     -> 目标长度: 你想把字符串补充到多长
        //       + 如果你写的长度小于字符串本身长度, 那么这个函数没有意义
        //            比如说这个字符串长度是10   你想要把这个字符串长度补充到5   这是没意义的   只会给你原样输出
        //       + 超过长度以后, 用填充字符串补齐
        //     -> 填充字符串: 可以是一个字符, 也可以是多个
        //       + 多个的时候, 如果超长后面的就不要了
        //   => 作用: 从前面字符串补齐
        //   => 返回值: 补齐以后的字符串

        // 20. padEnd()
        //   => 语法: 字符串.padEnd(目标长度, '填充字符串')
        //     -> 目标长度: 你想把字符串补充到多长
        //       + 如果你写的长度小于字符串本身长度, 那么这个函数没有意义
        //       + 超过长度以后, 用填充字符串补齐
        //     -> 填充字符串: 可以是一个字符, 也可以是多个
        //       + 多个的时候, 如果超长后面的就不要了
        //   => 作用: 从后面字符串补齐
        //   => 返回值: 补齐以后的字符串

        // 21. startsWith()      因为我们这个字符串片段可以是一个字母  也可以是两个字母  所以我们写成  starts
        //   => 语法: 字符串.startsWith('字符串片段')
        //   => 作用: 判断该字符串是不是以这个字符串片段开始
        //   => 返回值: 一个布尔值
        //     -> 如果是, 就是 true
        //     -> 如果不是, 就是 false

        // 22. endsWith()
        //   => 语法: 字符串.endsWith('字符串片段')
        //   => 作用: 判断该字符串是不是以这个字符串片段结尾
        //   => 返回值: 一个布尔值
        //     -> 如果是, 就是 true
        //     -> 如果不是, 就是 false

       3.Date日期对象

        

Date日期对象 是一个构造函数 必须使用new 来调用创建我们的日期对象

        var arr = new Array(); //创建了一个数组对象

         var obj = new Object(); //创建了一个对象实例

4.格式化日期

        var date = new Date();
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var dates = date.getDate();
        var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
        var day = date.getDay();
        var hours = date.getHours();
        var minutes = date.getMinutes();
        var seconds = date.getSeconds();
        console.log('今天是' + year + '年' + month + '月' + dates + '日 ' + arr[day] + hours + '点' + minutes + '分' + seconds + '秒');

5.添加删除数组元素方法

1. push()在我们数组的末尾  添加一个或者多个数组元素 push   推

2. unshift 在我们数组的开头 添加一个或者多个数组元素

3. pop() 他可以删除数组的最后一个元素

4. shift() 他可以删除数组的第一个元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值