22-扩展

一 进程与线程;同步与异步任务;宏任务与微任务

一、进程与线程

一个程序只有一个进程,一个进程包含多个线程,单线程和多线程

二、同步与异步任务

同步任务:是指在主线程上排队执行的任务,只有前一个任务执行完毕,才能继续执行下一个任务。按顺序执行,可以看做单线程,javascript脚本语言是单线程,避免页面标签杂乱无序。
异步任务: 执行顺序是不确定的,由触发条件决定,什么时间执行也是不确定的。

异步任务分类

  1. setTimeout/setInterval
  2. axios的异步请求
  3. Promise的异步处理机制

三、宏任务与微任务

异步任务分为宏任务和微任务

先执行微任务,再执行宏任务。

  • setTimeout/setInterval属于宏任务
  • Promise属于微任务

四、案例

(1).同步与异步任务,输出顺序

image-20230625145201157

image-20230625145308376

(2).Promise的异步处理机制

概念:Promise属于微任务,定时器setTimeout/setInterval是宏任务。先微任务,后宏任务。

image-20230625165808549

程序的执行过程

​ 先执行同步任务

​ 再执行异步任务(先微任务,后宏任务)

二 H5自定义属性

html5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放

案例

    <!-- 
        标签的自定义属性
        html5中我们可以使用data-前缀设置标签的自定义属性,并保存数据
    -->
    <div id="div1" data-username="admin" data-index="1" data-msg="hello"></div>
    <button id="btn">按钮</button>
    <script>
        const obtn = document.querySelector("#btn")
        const oDiv = document.querySelector("#div1")
        obtn.onclick = function(){
            // 获取到标签上的自定义属性,结果是一个对象
            const obj = oDiv.dataset
            console.log(obj);
            //对象点属性拿到属性的值
            console.log(obj.username);
            console.log(obj.index);
            console.log(obj.msg);
        }
    </script>

三 原型和原型链

原型概念

再es5和es6的面向对象编程中,所有的类都会产生原型对象。

当程序运行的时候,类的原型对象就确定了,这个类以及这个类的所有对象共享这个原型

要操作原型对象,我们有两种方案:

  1. 通过对象属性__propto__来获取原型
  2. 通过类名.prototype这个属性来获取原型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fQlbz241-1692931023320)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230629163535230.png)]

    <!-- 
        一 认识原型
        1.什么是原型,它在什么时候产生
        2.原型跟类和对象有什么关系
        3.对象的方法存储在哪里?
        4.怎么获取原型
        二 原型在项目中有什么用
           给类的对象添加共有的属性或方法 
     -->
    <script>
        class Student{

           constructor(name){
            this.name = name
           }
           eat(){
            console.log("吃饭");
           }
        }

        //获取原型的第一种方式
        console.log(Student.prototype);

        //创建student对象
        const stu1 = new Student("赵日天")
        const stu2 = new Student("李杀神")
       
        //获取原型的第二种方式
        console.log(stu1.__proto__);
        console.log(stu2.__proto__);

        //在原型上添加属性或方法
        stu1.__proto__.sex = "男"
        stu1.__proto__.run = function(){
            //哪个对象调用这个方法,this就是哪个对象
            console.log(this.name+"跑步");
        }


        console.log(stu1);
        console.log(stu2);

        //输出对象属性的值
        console.log(stu1.sex);
        console.log(stu2.sex);
        //调用对象的方法
        stu1.run()
        stu2.run()
    </script>

类、或者对象可以直接操作原型,将一些公共属性和行为放在原型对象身上。

原型链

image-20230629165140200

    <!-- 
        原型链
     -->
    <script>
        class Student {
            constructor(name) {
                this.name = name
            }
            eat() {
                console.log("吃饭");
            }
        }


        class Person{
            constructor(age){
                this.age = age
            }
            study(){
                console.log("学习");
            }
        }


        //创建student对象
        const stu1 = new Student("赵日天")
        //创建Person对象
        const p1 = new Person(20)

        //修改stu1的原型指向
        stu1.__proto__ = p1

        //输出学生对象
        console.log(stu1);
        console.log(p1);

        //输出对象的属性
        console.log(stu1.name);
        console.log(stu1.age);
        stu1.study()
    </script>

总结:

当我们访问对象的一个属性或方法时,它会先在对象自身中寻找,如果有则直接使用,如果没有则会去原型对象中寻找,如果找到则直接使用。如果没有则去原型的原型中寻找,直到找到Object对象的原型,如果在Object原型中依然没有找到,则返回undefined。

练习:

创建一个Global类,并创建global对象。

创建Dog和Cat类,他们分别有看家lookHome和抓老鼠catchMouse的方法

创建dog和cat对象,并把这两个对象添加到global的原型上

通过global对象分别调用lookHome和catchMouse方法

四 网络编程基础

1、软件结构

​ C/S结构:全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。

image-20210225200153226

B/S结构:全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。

image-20210225200221133

​ 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机 的通信的程序。

C/S:客户端/服务器结构,用户需要在设备上安装专门软件才可以使用
B/S:浏览器/服务器结构,用户不需要安装专门的软件,直接通过浏览器使用

2、网络编程三要素

a、协议

​ **网络通信协议:**通信协议是计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就 好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了 统一规定,通信双方必须同时遵守,最终完成数据交换。

b、IP地址

​ IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。IP地址用来给一个网络中的计算机设 备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话,那么“IP地址”就相当于“电话号码”。

根据类型分:

​ IPv4:是一个32位的二进制数,通常被分为4个字节,表示成 a.b.c.d 的形式,例如 192.168.65.100 。其 中a、b、c、d都是0~255之间的十进制整数,那么最多可以表示42亿个。

​ IPv6:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。 有资料显示,全球IPv4地址在2011年2月分配完毕。

​ 为了扩大地址空间,拟通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进 制数,表示成 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 ,号称可以为全世界的每一粒沙子编上一个网 址,这样就解决了网络地址资源数量不够的问题。

常用命令
查看本机IP地址,在控制台输入:ipconfig
检查网络是否连通,在控制台输入:
    ping 空格 IP地址 
    ping 220.181.57.216
特殊的IP地址:
		192.172.8.3是路由器分配给我的本机ip
		127.0.0.1操作系统给电脑分配的ip
		localhost是127.0.0.1的别名
c、端口号

​ 网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如何区分 这些进程呢?

​ 如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。

端口号:用两个字节表示的整数,它的取值范围是0~65535。其中,0~1023之间的端口号用于一些知名的网 络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会 导致当前程序启动失败。

​ 利用 协议 + IP地址 + 端口号 三元组合,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其 它进程进行交互。

3、http协议

http是超文本传输协议,它是请求响应模式

https是http+ssl证书加密后协议

1 HTTP请求

浏览器地址栏输入服务器接口地址,浏览会给后端发送HTTP请求。

http请求,默认包含四部分信息

  1. 请求行
请求网址: http://127.0.0.1:3001/users
请求方法: GET
远程地址: 127.0.0.1:3001
  1. 请求头
//浏览器告诉服务器,浏览器可以接受什么数据
Accept: text/html,application/xhtml+xml,application/xml
//浏览器支持哪些压缩格式
Accept-Encoding: gzip, deflate, br
//浏览器目前的语言环境
Accept-Language: zh-CN,zh;q=0.9
//连接状态
Connection: keep-alive
//前端浏览器默认发送后端凭证
Cookie: SECKEY_ABVK=IE60kJEZFEiFwb06xArgyaXwqEWW0rVJTXK90U6amJo%3D;
//服务器ip:端口
Host: 127.0.0.1:3001
//浏览器信息
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
  1. 空行
空行是一个空白的内容,它将请求头数据和用户数据分开
  1. 请求体
前端用post请求来传输数据,数据会封装到请求体
2 HTTP响应

服务器只要接收到了请求,就要给出响应。

  1. 响应行
状态码:200
状态描述:OK
  1. 响应头
Content-Type:后端返回给前端数据是什么格式,浏览器会根据当前文件类型决定如何解析
Date:服务器响应日期。
Content-length:服务器返回前端数据多大。
Server:服务器是什么类型
  1. 空行
空行是为了分割响应头和消息体内容
  1. 消息体
后端响应的数据

4 状态码

2xx:请求已经成功

4xx:前端访问路径有问题

5xx:服务器内部出现错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值