JavaScript|青训营笔记

66 阅读6分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13天

JavaScript

一、Js中少用的方法

(1) in/hasOwnProperty()———检查对象是否有某个方法或者属性

执行结果如右图所示,注意 如果自身没有而是原型对象有 使用in会返回true ,而使用hasOwnProperty()会返回false

二、对象

1、数组对象

  • 数组也是对象的一种,它是一种用于表达顺序关系的值的集合的语言结构

(1)创建数组

  1. 使用 new Array();

  2. 使用字面量创建

(2)遍历数组

  1. 使用for循环

  2. 调用数组的foreach(item,[index],[arrays])

    • 第一个参数:当前正在遍历的元素
    • 第二个参数:当前正在遍历元素的索引
    • 第三个参数:当前正在遍历元素所属数组

(3)数组方法

  1. push() :队末添加一个或多个元素,并返回新的数组长度

  2. pop() :删除最后一个元素,并返回这个元素

  3. unshift(): 向数组开头添加一个或多个元素,并返回新的数组长度

  4. shift(): 删除第一个元素,并返回这个元素

  5. slice(index1,[index2]) :从数组中提取指定元素, 该方法不会改变原数组,而是返回一个新的数组

    • 第一个参数:截取开始的位置索引,截取包含开始索引

    • 第二个参数:选用,截取结束的位置索引,截取不包含结束索引(不写该参数表示截取至数组末尾)

      image-20221107233146502

  6. splice(index1,[num],...) :删除数组中的指定元素, 该方法会影响到原数组,它将指定元素从原数组中删除,并返回这些被删除的元素(以数组的形式)

    • 第一个参数:表示删除开始的位置索引

    • 第二个参数:表示删除元素的个数

    • 第三个以及往后的参数:将从删除开始索引位置插入这些元素

  7. concat() :该方法可以连接两个或多个数组,同时还能向他们合并后的数组最后追加若干元素。该方法不会对原有数组造成影响,而是返回一个新的数组

  8. join(): 可以将一个数组转换为一个字符串,该方法不会对原有数组造成影响,还可以传递第二个参数作为数组中元素的分隔符,如果不传递则默认""

2、函数对象

(1)call()和apply()方法

  • 这两个方法都是函数对象的方法,作用就是调用某个函数。

  • 他们 第一个参数都是指定调用该函数的this指向

  • call()的第二个及后续实参将传递到被调用的函数作为参数

  • apply()的第二个参数为一个数组,表示被调用函数的参数们

  • 举例

    • call():

    • apply():

(2)this指向详解

  • 函数形式调用时,this永远都是window
  • 方法的形式调用时,this是调用方法的对象
  • 构造函数的形式调用时,this是新创建的那个对象
  • 使用call和apply调用时,this是传入的那个指定对象

(3)arguments参数详解

  • 在调用函数时,浏览器不仅会传递隐含的 this,还会传递另一个隐含的arguments,其将调用函数时所有的参数包装为一个数组arguments,并且在函数内部我们可以直接使用该数组

3、Date对象

  • 在javascript中使用Date对象来表示一个时间,如果直接使用构造方法实例化一个Date对象,则会封装代码执行瞬间的时间为其值。

  • Date对象中的方法:

    1. getFullYear():获取四位数年份 --2022
    2. getMonth():获取当前月份( 注意其值需要加1,范围是0~11)
    3. getDate(): 获取当前日期
    4. getHours():获取当前小时(0~23)
    5. getMinutes():获取当前分钟(0~59)
    6. getSeconds():获取当前秒数(0~59)
    7. getMilliseconds():获取毫秒(0~999)

4、Math对象

  • 固定值

    • 圆周率:Math.PI 3.1415...
    • e:Math.E 2.7182818....
  • 方法:

    • 绝对值:Math.abs()

    • 向上取整(有小数就直接+1):Math.ceil()

    • 向下取整(舍弃小数):Math.floor()

    • 四舍五入:Math.round()

    • 生成一个0-1的随机数:Math.random()

      • 生成0-10:Math.random()*10
      • 生成1-10:Math.random*(10-1)+1
    • 返回x的y次幂:Math.pow(x,y)

    • 返回x的平方根:Math.sqrt(x)

5、String对象

  • 属性:

    • 长度:.length
  • 方法:

    • charAt():返回索引处的字符

    • charCodeAt():返回索引处字符的字符编码【Unicode】

    • concat():用来连接两个或多个字符串

    • indexof():检索一个字符串中是否包含参数,如果包含返回第一次出现的索引,否则返回-1。可以指定第二个参数为查寻起始位置索引

    • lastIndexOf():同上,只不过返回最后一次出现的位置

    • slice(start,[end]):截取字符中指定内容,不影响原字符,而是返回新的字符串。

      • 第一个参数:截取起始索引
      • 第二个参数:选用,截取结束索引(不包含在内)【注意:也可以传递一个负数作为参数,负数的话将会从后边计算】
    • subString(start,[end]):同上,只是第二个参数不接受负值

    • substr(start,length):截取字符串,第二个参数为截取长度

    • split():将一个字符串拆分为一个数组, 需要指定一个参数作为拆分符,将会据此拆分字符串

    • toUpperCase():将一个字符串全部转为大写

    • toLowerCase():将一个字符串全部转为小写

6、正则对象

(1)创建正则对象

  • 使用对象创建

    let 变量名 = new RegExp("正则表达式","匹配模式");
    
    • 匹配模式:

      • i:忽略大小写
      • g:全局匹配模式
      • ig:忽略大小写且全局匹配模式
  • 使用字面量创建

    let 变量名 = /正则表达式/匹配模式
    
    • 匹配模式:

      • i:忽略大小写
      • g:全局匹配模式
      • m:执行多行匹配

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

(2)正则进阶

  • 或:|

    //检查一个字符串中是否含有ab
    let reg = /a|b/;
    
  • [ ]里的内容也是或的关系

    • [a-z] : 任意小写字母
    • [A-Z] :任意大写字母
    • [A-z] :任意字母
    • [0-9] :任意数字
    //检查一个字符串中是否包含任意字母
    let reg = /[A-z]/
    //检查一个字符串中是否包含abc、adc、aec
    let reg = /a[bde]c/
    
  • 除了:^

    • [^a-z]:除了任意小写字母
    • [^A-Z]:除了任意大写字母
    • [^A-z]:除了任意字母
    • [^0-9]:除了任意数字
    //检查一个字符串中是否不包含数字
    let reg = /^[0-9]/