• JavaScript (下)


    1.面向对象

    在 Java 中我们学习过面向对象,核心思想是万物皆对象。在 JavaScript 中同样也有面向对象。思想类似。

    把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式

    1.类的定义和使用

    格式定义:

    1. class 类名{
    2. constructor(变量列表) {
    3. 变量赋值;
    4. }
    5. 方法名(参数列表) {
    6. 方法体;
    7. return 返回值;
    8. }
    9. }

    使用格式:

    1. let 对象名 = new 类名(实际变量值);
    2. 对象名.方法名();

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>类的定义和使用title>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. //定义Person类
    12. class Person{
    13. //构造方法
    14. constructor(name,age){
    15. this.name = name;
    16. this.age = age;
    17. }
    18. //show方法
    19. show(){
    20. document.write(this.name + "," + this.age + "
      "
      );
    21. }
    22. //eat方法
    23. eat(){
    24. document.write("吃饭...");
    25. }
    26. }
    27. //使用Person类
    28. let p = new Person("张三",23);
    29. p.show();
    30. p.eat();
    31. script>
    32. html>

    2.字面量类的定义和使用

    格式定义 :

    1. let 对象名 = {
    2. 变量名 : 变量值,
    3. 变量名 : 变量值,
    4. ...
    5. 方法名 : function(参数列表) {
    6. 方法体;
    7. return 返回值;
    8. },
    9. ...
    10. };

    使用格式:

    1. 对象名.变量名
    2. 对象名.方法名();

    这个其实是直接创建了一个对象

    在定义类里边的变量和方法的时候,直接就创建了这个类的对象

    字面量:就是从代码字面意思就知道是啥类型

    而对象的字面量就是一对大括号意思就是,以后我们看到给变量赋值时,等号右边是一对大括号,那就知道声明的这个变量就是一个对象

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>字面量定义类和使用title>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. //定义person
    12. let person = {
    13. name : "张三",
    14. age : 23,
    15. hobby : ["听课","学习"],
    16. eat : function() {
    17. document.write("吃饭...");
    18. }
    19. };
    20. //使用person
    21. document.write(person.name + "," + person.age + "," + person.hobby[0] + "," + person.hobby[1] + "
      "
      );
    22. person.eat();
    23. script>
    24. html>

    3. 继承

    继承:让类与类产生子父类的关系,子类可以使用父类有权限的成员(提高代码复用性与维护性)

    继承关键字:extends

    顶级父类:Object

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>继承title>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. //定义Person类
    12. class Person{
    13. //构造方法
    14. constructor(name,age){
    15. this.name = name;
    16. this.age = age;
    17. }
    18. //eat方法
    19. eat(){
    20. document.write("吃饭...");
    21. }
    22. }
    23. //定义Worker类继承Person
    24. class Worker extends Person{
    25. constructor(name,age,salary){
    26. super(name,age);
    27. this.salary = salary;
    28. }
    29. show(){
    30. document.write(this.name + "," + this.age + "," + this.salary + "
      "
      );
    31. }
    32. }
    33. //使用Worker
    34. let w = new Worker("张三",23,10000);
    35. w.show();
    36. w.eat();
    37. script>
    38. html>

    2.内置对象

    1.Number

    方法名说明
    parseFloat()将传入的字符串浮点数转为浮点数
    parseInt()将传入的字符串整数转为整数

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Numbertitle>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. //1. parseFloat() 将传入的字符串浮点数转为浮点数
    12. document.write(Number.parseFloat("3.14") + "
      "
      );
    13. //2. parseInt() 将传入的字符串整数转为整数
    14. document.write(Number.parseInt("100") + "
      "
      );
    15. document.write(Number.parseInt("200abc") + "
      "
      ); // 从数字开始转换,直到不是数字为止
    16. // 3. isNaN() 判断某个东西是否是 非数字
    17. // not a number : 非数字
    18. console.log(Number.isNaN(NaN)); // true
    19. console.log(Number.isNaN(1)); // false
    20. script>
    21. html>

    2.Math

    方法名说明
    ceil(x)向上取整
    floor(x)向下取整
    round(x)把数四舍五入为最接近的整数
    random()随机数,返回的是0.0-1.0之间的范围(含头不含尾)
    pow(x,y)幂运算 x的y次方

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Mathtitle>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. //1. ceil(x) 向上取整
    12. document.write(Math.ceil(4.4) + "
      "
      ); // 5
    13. //2. floor(x) 向下取整
    14. document.write(Math.floor(4.4) + "
      "
      ); // 4
    15. //3. round(x) 把数四舍五入为最接近的整数
    16. document.write(Math.round(4.1) + "
      "
      ); // 4
    17. document.write(Math.round(4.6) + "
      "
      ); // 5
    18. //4. random() 随机数,返回的是0.0-1.0之间范围(含头不含尾)
    19. document.write(Math.random() + "
      "
      ); // 随机数
    20. //5. pow(x,y) 幂运算 x的y次方
    21. document.write(Math.pow(2,3) + "
      "
      ); // 8
    22. script>
    23. html>

    3.Date

    构造方法

    构造方法说明
    Date()根据当前时间创建对象
    Date(value)根据指定毫秒值创建对象
    Date(year,month,[day,hours,minutes,seconds,milliseconds])根据指定字段创建对象(月份是0~11)

    成员方法

    成员方法说明
    getFullYear()获取年份
    getMonth()获取月份
    getDate()获取天数
    getHours()获取小时
    getMinutes()获取分钟
    getSeconds()获取秒数
    getTime()返回据1970年1月1日至今的毫秒数
    toLocaleString()返回本地日期格式的字符串

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Datetitle>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. //构造方法
    12. //1. Date() 根据当前时间创建对象
    13. let d1 = new Date();
    14. document.write(d1 + "
      "
      );
    15. //2. Date(value) 根据指定毫秒值创建对象
    16. let d2 = new Date(10000);
    17. document.write(d2 + "
      "
      );
    18. //3. Date(year,month,[day,hours,minutes,seconds,milliseconds]) 根据指定字段创建对象(月份是0~11)
    19. let d3 = new Date(2222,2,2,20,20,20);
    20. document.write(d3 + "
      "
      );
    21. //成员方法
    22. //1. getFullYear() 获取年份
    23. document.write(d3.getFullYear() + "
      "
      );
    24. //2. getMonth() 获取月份
    25. document.write(d3.getMonth() + "
      "
      );
    26. //3. getDate() 获取天数
    27. document.write(d3.getDate() + "
      "
      );
    28. //4. toLocaleString() 返回本地日期格式的字符串
    29. document.write(d3.toLocaleString());
    30. script>
    31. html>

    4.String 

    构造方法

    构造方法说明
    String(value)根据指定字符串创建对象
    let s =“字符串”直接赋值

    成员方法

    成员方法说明
    length属性获取字符串长度
    charAt(index)获取指定索引处的字符
    indexOf(value)获取指定字符串出现的索引位置,找不到为-1
    substring(start,end)根据指定索引范围截取字符串(含头不含尾)
    split(value)根据指定规则切割字符串,返回数组
    replace(old,new)使用新字符串替换老字符串

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Stringtitle>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. //1. 构造方法创建字符串对象
    12. let s1 = new String("hello");
    13. document.write(s1 + "
      "
      );
    14. //2. 直接赋值
    15. let s2 = "hello";
    16. document.write(s2 + "
      "
      );
    17. //属性
    18. //1. length 获取字符串的长度
    19. document.write(s2.length + "
      "
      );
    20. //成员方法
    21. //1. charAt(index) 获取指定索引处的字符
    22. document.write(s2.charAt(1) + "
      "
      );
    23. //2. indexOf(value) 获取指定字符串出现的索引位置
    24. document.write(s2.indexOf("l") + "
      "
      );
    25. //3. substring(start,end) 根据指定索引范围截取字符串(含头不含尾)
    26. document.write(s2.substring(2,4) + "
      "
      );
    27. //4. split(value) 根据指定规则切割字符串,返回数组
    28. let s3 = "张三,23,男";
    29. let arr = s3.split(",");
    30. for(let i = 0; i < arr.length; i++) {
    31. document.write(arr[i] + "
      "
      );
    32. }
    33. //5. replace(old,new) 使用新字符串替换老字符串
    34. let s4 = "你会不会跳伞啊?让我落地成盒。你妹的。";
    35. let s5 = s4.replace("你妹的","***");
    36. document.write(s5 + "
      "
      );
    37. script>
    38. html>

    5.RegExp 

    正则表达式:是一种对字符串进行匹配的规则

    常用在登陆、注册的表单校验

    构造方法

    构造方法说明
    RegExp(规则)根据指定规则创建对象
    let reg =/^规则$/直接赋值

    成员方法

    成员方法说明
    test(匹配的字符串)根据指定规则验证字符串是否符合

    规则

    表达式说明
    [a]只能是a
    [abc]只能是abc中的某一个
    [1]只能是1
    [123]只能是123中的某一个
    [a-z]可以是a到z中的某一个
    [A-Z]可以是A到Z中的某一个
    [0-9]可以是0到9中的某一个
    {5}只能出现5次
    {4,6}只能出现4到6次

    [] 多选一

    {}某个规则重复出现的次数

    例:

    需求一:验证手机号

            第一位1,第二位358,第三到第十一必须是数字。总长度11位

    需求二:验证用户名   

            字母,数字,下划线组成。总长度4~16位

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>RegExptitle>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. //1.验证手机号
    12. //规则:第一位1,第二位358,第三到十一位必须是数字。总长度11
    13. let reg1 = /^[1][358][0-9]{9}$/;
    14. document.write(reg1.test("18688888888") + "
      "
      );
    15. //2.验证用户名
    16. //规则:字母、数字、下划线组成。总长度4~16
    17. let reg2 = /^[a-zA-Z_0-9]{4,16}$/;
    18. document.write(reg2.test("zhang_san123"));
    19. script>
    20. html>

    其他正则表达式:

    6.Array 

    成员方法说明
    push(元素)添加元素到数组的末尾
    pop()删除数组末尾的元素
    shift()删除数组最前面的元素
    includes(元素)判断数组是否包含给定的值
    reverse()反转数组中的元素
    sort()对数组元素进行排序

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Arraytitle>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. let arr = [1,2,3,4,5];
    12. //1. push(元素) 添加元素到数组的末尾
    13. arr.push(6);
    14. document.write(arr + "
      "
      );
    15. //2. pop() 删除数组末尾的元素
    16. arr.pop();
    17. document.write(arr + "
      "
      );
    18. //3. shift() 删除数组最前面的元素
    19. arr.shift();
    20. document.write(arr + "
      "
      );
    21. //4. includes(元素) 判断数组中是否包含指定的元素
    22. document.write(arr.includes(2) + "
      "
      );
    23. //5. reverse() 反转数组元素
    24. arr.reverse();
    25. document.write(arr + "
      "
      );
    26. //6. sort() 对数组元素排序
    27. arr.sort();
    28. document.write(arr + "
      "
      );
    29. script>
    30. html>

    7.Set

    JavaScript 中的 Set 集合,元素唯一,存取顺序一致

    构造方法

    构造方法说明
    Set()创建Set集合对象

    成员方法

    成员方法说明
    add(元素)向集合中添加元素
    size属性获取集合长度
    keys()获取迭代器对象
    delete(元素)删除指定元素

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Settitle>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. // Set() 创建集合对象
    12. let s = new Set();
    13. // add(元素) 添加元素
    14. s.add("a");
    15. s.add("b");
    16. s.add("c");
    17. s.add("c");
    18. // size属性 获取集合的长度
    19. document.write(s.size + "
      "
      ); // 3
    20. // keys() 获取迭代器对象
    21. let st = s.keys();
    22. for(let i = 0; i < s.size; i++){
    23. document.write(st.next().value + "
      "
      );
    24. }
    25. // delete(元素) 删除指定元素
    26. document.write(s.delete("c") + "
      "
      );
    27. let st2 = s.keys();
    28. for(let i = 0; i < s.size; i++){
    29. document.write(st2.next().value + "
      "
      );
    30. }
    31. script>
    32. html>

    8.Map 

    JavaScript 中的 Map 集合,key 唯一,存取顺序一致

    构造方法

    构造方法说明
    Map()创建Map集合对象

    成员方法 

    成员方法说明
    set(key,value)向集合中添加元素
    size属性获取集合长度
    get(key)根据key获取value
    entries()获取迭代器对象
    delete(key)根据key删除键值对

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Maptitle>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. // Map() 创建Map集合对象
    12. let map = new Map();
    13. // set(key,value) 添加元素
    14. map.set("张三",23);
    15. map.set("李四",24);
    16. map.set("李四",25);
    17. // size属性 获取集合的长度
    18. document.write(map.size + "
      "
      );
    19. // get(key) 根据key获取value
    20. document.write(map.get("李四") + "
      "
      );
    21. // entries() 获取迭代器对象
    22. let et = map.entries();
    23. for(let i = 0; i < map.size; i++){
    24. document.write(et.next().value + "
      "
      );
    25. }
    26. // delete(key) 根据key删除键值对
    27. document.write(map.delete("李四") + "
      "
      );
    28. let et2 = map.entries();
    29. for(let i = 0; i < map.size; i++){
    30. document.write(et2.next().value + "
      "
      );
    31. }
    32. script>
    33. html>

    9.Json 

    JSON(JavaScript Object Notation):是一种轻量级的数据交换格式

    • 它是基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据
    • 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于计算机解析和 生成,并有效的提升网络传输效率
    成员方法说明
    stringify(对象)将指定对象转换为json格式字符串
    parse(字符串)将指定json格式字符串解析成对象

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>JSONtitle>
    7. head>
    8. <body>
    9. body>
    10. <script>
    11. //定义天气对象
    12. let weather = {
    13. city : "北京",
    14. date : "2088-08-08",
    15. wendu : "10° ~ 23°",
    16. shidu : "22%"
    17. };
    18. //1.将天气对象转换为JSON格式的字符串
    19. let str = JSON.stringify(weather);
    20. document.write(str + "
      "
      );
    21. //2.将JSON格式字符串解析成JS对象
    22. let weather2 = JSON.parse(str);
    23. document.write("城市:" + weather2.city + "
      "
      );
    24. document.write("日期:" + weather2.date + "
      "
      );
    25. document.write("温度:" + weather2.wendu + "
      "
      );
    26. document.write("湿度:" + weather2.shidu + "
      "
      );
    27. script>
    28. html>

    10.案例

    表单校验

    步骤:

    1.为注册表单绑定提交事件(true提交、false不提交)。

    2.获取用户名和密码。

    3.判断用户名是否满足条件(4到16位纯字母)。

    4.判断密码是否满足条件(6位纯数字)。

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>表单校验title>
    7. <link rel="stylesheet" href="css/style.css">link>
    8. head>
    9. <body>
    10. <div class="login-form-wrap">
    11. <h1>CV程序员h1>
    12. <form class="login-form" action="#" id="regist" method="get" autocomplete="off">
    13. <label>
    14. <input type="text" id="username" name="username" placeholder="Username..." value="">
    15. label>
    16. <label>
    17. <input type="password" id="password" name="password" placeholder="Password..." value="">
    18. label>
    19. <input type="submit" value="注册">
    20. form>
    21. div>
    22. body>
    23. <script>
    24. //1.为表单绑定提交事件
    25. document.getElementById("regist").onsubmit = function() {
    26. //2.获取填写的用户名和密码
    27. let username = document.getElementById("username").value;
    28. let password = document.getElementById("password").value;
    29. //3.判断用户名是否符合规则 4~16位纯字母
    30. let reg1 = /^[a-zA-Z]{4,16}$/;
    31. if(!reg1.test(username)) {
    32. alert("用户名不符合规则,请输入4到16位的纯字母!");
    33. return false;
    34. }
    35. //4.判断密码是否符合规则 6位纯数字
    36. let reg2 = /^[\d]{6}$/;
    37. if(!reg2.test(password)) {
    38. alert("密码不符合规则,请输入6位纯数字的密码!");
    39. return false;
    40. }
    41. //5.如果所有条件都不满足,则提交表单
    42. return true;
    43. }
    44. script>
    45. html>

    3.JAvaScript  BOM

    BOM(Browser Object Model):浏览器对象模型。

    将浏览器的各个组成部分封装成不同的对象,方便我们进行操作。

    1.Windows窗口对象

    定时器

    唯一标识 setTimeout(功能,毫秒值):设置一次性定时器 (延时定时器)

            第一个参数,只需要传递函数名即可,不需要调用

    clearTimeout(标识):取消一次性定时器

    唯一标识 setInterval(功能,毫秒值):设置循环定时器 (间隔定时器)

            第一个参数,只需要传递函数名即可,不需要调用

    clearInterval(标识):取消循环定时器

    加载事件

    window.onload:在页面加载完毕后触发此事件的功能

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>window窗口对象title>
    7. <script>
    8. //一、定时器
    9. function fun(){
    10. alert("该起床了!");
    11. }
    12. //设置一次性定时器
    13. //let d1 = setTimeout("fun()",3000);
    14. //取消一次性定时器
    15. //clearTimeout(d1);
    16. //设置循环定时器
    17. //let d2 = setInterval("fun()",3000);
    18. //取消循环定时器
    19. //clearInterval(d2);
    20. //加载事件
    21. window.onload = function(){
    22. let div = document.getElementById("div");
    23. alert(div);
    24. }
    25. script>
    26. head>
    27. <body>
    28. <div id="div">dddddiv>
    29. body>
    30. html>

    2.Location 地址栏对象 

    href 属性

    就是浏览器的地址栏。通过设置href来改变地址栏地址,进行界面的跳转。

    例:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>location地址栏对象title>
    7. <style>
    8. p{
    9. text-align: center;
    10. }
    11. span{
    12. color: red;
    13. }
    14. style>
    15. head>
    16. <body>
    17. <p>
    18. 注册成功!<span id="time">5span>秒之后自动跳转到首页...
    19. p>
    20. body>
    21. <script>
    22. //1.定义方法。改变秒数,跳转页面
    23. let num = 5;
    24. function showTime() {
    25. num--;
    26. if(num <= 0) {
    27. //跳转首页
    28. location.href = "index.html";
    29. }
    30. let span = document.getElementById("time");
    31. span.innerHTML = num;
    32. }
    33. //2.设置循环定时器,每1秒钟执行showTime方法
    34. setInterval("showTime()",1000);
    35. script>
    36. html>

    4.JAvaScript  封装(思想)

    封装:将复杂的操作进行封装隐藏,对外提供更加简单的操作

    获取元素的方法

    document.getElementById(id值):根据 id 值获取元素

    document.getElementsByName(name值):根据 name 属性值获取元素们

    document.getElementsByTagName(标签名):根据标签名获取元素们

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>封装title>
    7. head>
    8. <body>
    9. <div id="div1">div1div>
    10. <div name="div2">div2div>
    11. body>
    12. <script src="my.js">script>
    13. <script>
    14. let div1 = getById("div1");
    15. alert(div1);
    16. // let div1 = document.getElementById("div1");
    17. // alert(div1);
    18. // let divs = document.getElementsByName("div2");
    19. // alert(divs.length);
    20. // let divs2 = document.getElementsByTagName("div");
    21. // alert(divs2.length);
    22. script>
    23. html>

    my.js文件封装:

    1. function getById(id){
    2. return document.getElementById(id);
    3. }
    4. function getByName(name) {
    5. return document.getElementsByName(name);
    6. }
    7. function getByTag(tag) {
    8. return document.getElementsByTagName(tag);
    9. }

     ​以上操作都是基于原生 JavaScript 的,比较繁琐

    JQuery 是一个前端框架技术,针对 JavaScript 进行了一系列的封装,使得操作变得非常简单

  • 相关阅读:
    Linux: 命令:echo
    从0开始python学习-29.selenium 通过cookie信息进行登录
    HJ3 明明的随机数
    基于springboot学生管理系统设计与实现
    springBoot--web--http缓存机制测试
    .NET周报 【4月第3期 2023-04-15】
    ddt源码分析
    SegGPT: Segmenting Everything In Context论文笔记
    zookeeper选举机制详解
    兰顿蚂蚁:从无序到有序的伟大征程
  • 原文地址:https://blog.csdn.net/weixin_61611746/article/details/132179529