JS基础知识总结(三)

1、call( )和apply( )

函数对象的方法

        call() 和 apply()

        这两个都是函数对象的方法,需要通过函数对象来调用

        当对函数调用call() 和 apply() 都会调用函数执行

        在调用call() 和 apply()可以将一个对象指定为一个参数

        此时这个对象将会成为函数执行时的this

        call方法可以将实参在对象后依次传递

        apply 方法需要将实参封装到数组中统一传递

       function fun(a,b){
        //    alert(this);

        console.log(a);
        console.log(b);
       }
       // fun.call(obj,2,3);

        fun.apply(obj,[2,3]);

        // fun.call();
        // fun.apply();
        // fun();

        var obj={name:"obj"};

        var obj2={name:"obj2"};

        // fun.call(obj);

2、arguments

 在调用函数时浏览器每次都会传递两个隐含的参数

         1、函数上下文对象this

         2、封装实参的对象arguments

              arguments是一个类数组对象,他也可以通过索引来操作数据,也可以获取长度

              在调用函数时,我们传递的实参会封装到arguments(在arguments中保存)

              arguments.length可以获取实参的长度

              我们即使不定义形参也可以通过arguments来使用实参

              只不过比较麻烦

              arguments[0]表示第一个实参

              arguments它有一个属性叫callee这个属性对应一个函数对象

              就是当前正在执行的函数对象

3、date对象  在js中使用date对象来表示时间

1、创建一个date对象

如果直接使用构造函数创建一个Date对象,则会封装当前函数执行时间

 2、创建一个指定的时间对象

       需要在构造函数中传递一个时间的字符串作为参数

       日期的格式 月份/日/年  时:分:秒

 var d2=new Date("06/01/2022 12:00:00");

3、相关函数

    getDate()

    获取当前日期是几号

      getDay()

      获取当前日期对象是周几

      会返回0-6的值 0表示周日

      getMonth()

      获取当前日期的月份

      会返回0-11  0表示一月份

       getFullYear( ) 获取当前日期的年份

       getTime()

       获取当前日期对象的时间戳、

       时间戳 指的是从格林威治标准时间的1970年1月1日0时0分0秒

                   到当前日期所花费的毫秒数(一秒等于一千毫秒)

                   计算机底层在保存时间时使用的都是时间戳

4、math 

math和其他的对象不同但是他不是一个构造函数

它属于一个工具类不用创建对象,它里面封装了数学运算的属性和方法

例: Math.PI表示圆周率

        abs()可以用来计算一个数的绝对值

        Math.ceil()可以对一个数进行上取整,小数位只要有值就向上进一

        Math.floor()可以对一个数字进行向下取整,小数部分会被舍弃

        Math.round()可以对数字进行四舍五入取整

        Math.random()用来生成一个0-1之间的随机数

                                生成一个0-10的随机数

                                生成一个0-x之间的随机数

        Math.round(Math.random()*x)

        max()可以获取多个数字中的最大值

       min()可以获取多个数字中的最小值

       Math.pow()返回x的y次幂

       Math.sqrt()求平方根

5、包装类

  基本数据类型

  string number null boolean undefined

  引用数据类型

  object

  在js中为我们提供了三个包装类,通过这三个包装类我们可以将基本数据类型转换为对象

  1、String()

        将一个基本数据类型的字符串转换为string对象

  2、Boolean()

        将一个基本数据类型的布尔值转换为boolean对象

  3、Number()

        可以将一个基本数据类型的数字转换为number对象

  注意:我们在开发中基本不会用基本数据类型的对象

             如果使用基本数据类型的对象做比较时可能有一些不可预料的结果

注:方法和属性只能添加给对象,不能添加给基本数据类型,当我们对基本数据类型的值去调用属性和方法时, 浏览器会临时使用包装类将其转换为对象,然后在调用对象的属性和方法,调用完之后在将其转换为基本数据类型。

6、字符串的方法  在计算机底层字符串是以字符数组保存的

      1)length属性  可以用来获取字符串的长度

var str="hello h";
console.log(str.length);
//  7

      2)charAt()   可以返回字符串中指定位置的字符,根据索引获取指定字符

        var str="hello h";
        var result=str.charAt(0);
        console.log(result);
        // 结果 h

     3)  charCodeAt()   用来获取指定位置字符的Unicode编码

   var str="hello h";
   result=str.charCodeAt(0);
   console.log(result);
   //结果 104

     4)  String.fromcharCode()   可以根据字符编码获取字符      

   var str="hello h";
   result=String.fromCharCode(72);
   console.log(result);
   //结果 H

5)  concat()  可以用来连接两个字符串,作用和 + 一样 

       var str="hello h";
       result=str.concat("world");
       console.log(result);
       //结果 hello hworld

6) indexOf()   该方法可以检索一个字符串中是否含有指定内容, 如果字符串中含有该内容则会返回其第一次出现位置的索引,如果字符串中不含有则返回-1,可以指定第二个参数,指定查找开始位置

var str="hello h";
result=str.indexOf("h",1);
console.log(result);
//结果 6

7)  lastindexOf() 该方法用法的indexof一样,但是indexof是从前往后找,而lastindexof是从后往前找, 可以指定第二个参数,指定查找开始位置

var str="hello h";
result=str.lastIndexOf("h",5);
console.log(result);
// 结果 0

8)  slice()     

        * 从字符串中截取指定内容

        * 不会影响原字符串,而是将截取到的内容返回

        *  参数

        *     第一个开始位置的索引(包括开始)

        *     第二个结束位置的索引(不包括结尾)

        *     如果忽略第二个参数则截取第一个参数后所有的

        *     也可以传递一个负数

str="abcdefghijk";
result=str.slice(0,2)
console.log(result);
//结果 ab

9)   subString()       

       * 可以用来截取字符串和slice类似

        * 参数

        *     第一个开始位置的索引(包括开始)

        *     第二个结束位置的索引(不包括结尾)

        * 不同的是 这个方法不能接收负值,如果传递负值默认为0

        * 它会自动调整参数位置,如果第二个参数小于第一个则自动交换

var str="abdrfhjk";   
result=str.substring(1,2);
console.log(result);
//结果 b

 10)subStr()

        * 用来截取字符串

        * 参数

        *    第一个截取开始位置索引

        *    第二个截取数量

        *    对原字符串无影响

 str="abcdefg";
 result=str.substr(0,2);
 console.log(result);
 //结果 ab

11)split()

        * 将一个字符串拆分为一个数组

        * 需要一个字符串作为参数,将会根据字符串去拆分数组

        * 将空格作为参数传入,则会将每个字符都拆分为字符中的元素

str="abc,dcd,efg,dfg";
result=str.split(",");
console.log(result);

12)toLowerCase() 可以将字符串转换为小写并返回不会影响原字符串

str="abcdefg";
result=str.toLowerCase();
console.log(result);
//结果 abcdefg

13)toUpperCase()  可以将字符串转换为大写并返回不会影响原字符串

 str="abcdefg";
 result=str.toUpperCase();
 console.log(result);
 // 结果 ABCDEFG

7、正则表达式 

正则表达式用于定义一些字符串的规则

计算机可以根据正则表达式来检查一个字符串是否符合规则

获取字符串中符合规则的内容提取出来

        //创建正则表达式的对象
        /*
        * 语法:
        *    var 变量=new RegExp("正则表达式","匹配模式"); 
        * 
        * 使用typeof检查返回object
        * 
        * 这个正则表达式检查字符串里是否含有a
        * 
        * 在构造函数中可以传递一个匹配模式作为第二个参数
        *    可以是
        *        i 忽略大小写
        *        g 全局匹配模式
        */
        var reg=new RegExp("a","i");
        // console.log(typeof reg);

* 正则表达式的方法

* test()

* 使用这个方法可以用来检查一个字符串是否符合正则表达式的规则、

* 符合返回true,不符合返回false

 1、使用字面量来创建正则表达式     

       * 正则语法

        *      var 变量=/正则表达式/匹配模式

        * 使用字面量创建的方式更加简单

        * 使用构造函数创建的方式更加灵活

注:[ ]中括号里的关系也是或的关系

       [ab]==a|b

       [a-z]表示任意的小写字母

       [A-Z]表示任意的大写字母

       [A-z]表示任意字母

       [0-9]表示任意数字

       [^ ] ^表示除了都行

 2、字符串与正则表达式相关方法

     1)split()

        将一个字符串拆分为一个数组, 需要一个字符串作为参数,将会根据字符串去拆分数组,将空格作为参数传入,则会将每个字符都拆分为字符中的元素

        方法中可以传递一个正则表达式作为参数,这样的方法会根据正则表达式去拆分字符串

        这个方法即使不指定全局也会全部拆分

var str="1a2b3c4";
var result=str.split(/[A-z]/);
console.log(result);

    2)search()

         搜索字符串中是否含有指定内容,如果含有则返回第一次出现内容的索引,如果不含有则返回-1

        它可以接收一个正则表达式作为参数,然后会根据正则表达式去检测字符串

        因为只会查找第一个,所以即使设置全局匹配也没用

var str="1a2b3c4";
var result=str.search("a");
console.log(result);
//结果 1

3)match()

可以根据正则表达式将一个字符串中符合条件的内容提取出来

默认情况下match只会找到第一个符合要求的内容,找到之后就停止检测

我们可以设置正则表达式为全局匹配模式,这

就会匹配到全部内容

可以为一个正则表达式设置多个匹配模式且顺序无所谓

ig既全局又忽略大小写

match会将匹配到底的内容封装到一个数组中返回即使匹配内容只有一个

      str="1a2b3c4";
      result=str.match(/[A-z]/ig);
      console.log(result);

 

4)replace()

可以将字符串中指定内容替换为新的内容

参数:

     1、被替换掉的内容,可以接收一个正则表达式

     2、新的内容

     默认只会替换第一个

str="1a2b3c4";
result=str.replace(/[A-z]/gi," ");
console.log(result);

 

3、正则表达式语法

1)量词

 通过量词可以设置一个内容出现的次数

 量词只对它前面的一个内容起作用

 {n} 正好出现n次

 {m,n} 出现m-n次,n不写表示m次以上

 + 至少一个,相当于{1,}

 * 有没有都成,相当于{0,}

 ? 0个或1个,相当于{0,1}

正则表达式的开头与结尾

  •  ^ 表示开头
  •  $ 表示结尾
  •  如果在正则表达式中同时使用 ^ $ 表示要完全符合正则表达式

2) 特殊

检查一个字符串中是否含有  .

      .   表示任意字符

      在正则表达式中使用\作为转义字符

      用   \.    表示   .

      用    \\    表示  \

      注意使用构造函数时,由于他的参数是一个字符串,而\是字符串的转义字符

      如果需要使用\就要使用\\来代替

      如果需要使用\\就用\\\\来代替

除此之外:

           \w  任意字母,数字, _

          \W  除了字母,数字,_

          \d  任意数字[0-9]

          \D  除了数字[^0-9]

          \s  空格

          \S  除了空格 纯空格

          \b  单词边界

          \B  除了单词边界

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值