ES5基础语法

article/2025/10/20 17:45:52

一.类与对象

  class father {that = this;constructor(uname, age) {this.uname = uname;this.age = age;}sing(song) {console.log(this.uname + song);}}class son extends father {constructor(uname,age) {super(uname,age);this.uname=uname;this.age = age;}sing(song){console.log(super.sing('我不会唱')+song);}}var idm = new people('liang',13);idm.sing('bingyu');

里面的super关键子非常重要,
它代表父类里面的构造函数(相当于调用constructor),另外super还可 以调用父类里面的方法,注意的是super必须写在this的前面,否则会报错.

在写程序的时候 可以在类下面写 that =this 赋值this, 解决后续指向问题

二 . 原型的理解

原型指的就是对象,作用是类方法共享.
主要是节约内存
prototype 原型对象

__proto __对象原型
在这里插入图片描述

    function star(uname, age) {this.uname = uname;this.age = age;}star.prototype.sing = function () {console.log("djijfiosnedfoi");}var li = new star('li', 68);li.sing();console.log(li);

在这里插入图片描述
原型对象的应用 扩展内置对象方法
在这里插入图片描述
call呼叫函数

function fn(x,y) {console.log('lalalla我是卖报的小当家');console.log(this);console.log(x+y);console.log("=================")}var o ={name:'andy'};//调用函数 ,此时this指向windowfn.call();//修改this指向fn.call(o,1,3);

在这里插入图片描述

 function father(name, age) {this.name = name;this.age = age;console.log(this);}function son(name,age,score) {// this指向son ,通过call把父类this指向子类thisfather.call(this,name,age);console.log(score);}var li = new son('li',18,100);

在这里插入图片描述通过改变原型对象指向,来继承父类

function father(name, age) {this.name = name;this.age = age;console.log(this);}function son(nmae,age,score) {// this指向son ,通过call把父类this指向子类thisfather.call(this,name,age);console.log(score);}son.prototype = new father();son.prototype.constructor = son;son.prototype.exam = function () {console.log('孩子要考试');}var li = new son('li',18,100);li.exam();

在这里插入图片描述

foreach 数组遍历 es5新语法 return不会终止遍历

 var arr = [1,2,3];var sum =0;arr.forEach(function (value,index,array) {console.log('每个元素:'+value);console.log('每个数组:'+index);console.log('数组本身'+array);sum += value;})console.log(sum);

filter数组过滤

 var arr = [12, 44, 33, 34];var sum = 0;var newarr = arr.filter(function (value, index) {return value >= 20;})console.log(newarr);

在这里插入图片描述
some()函数查找元素 ,数组中存在就返回true

 var arr = [12, 44, 33, 34];var flag = arr.some(function (value) {return value == 12;})console.log(flag);

object.keys(map) 获取对象的key值 并保存到数组中

str.trim()去掉字符串两端空白字符

object.defineProperty(map,'prince',{writable :true, //允许修改prince值value:999 ,  //改变price的值})

在这里插入图片描述
delete.obj.key //删除 键和值

六种函数及调用

   //1.普通函数 指向windowfunction fn() {console.log('普通函数'+this);}//调用fn.call();//2.对象函数  this指向ovar o = {say: function () {console.log('对象函数'+this);}}//调用o.say();//3构造函数   指向实例对象function star() {console.log("3构造函数");}//调用new star();//4.绑定事件函数   this 指向的是函数调用者btn.onclick = function () {}//5.定时器函数 this 指向windowsetInterval(function () {},1000);//6.立即执行函数 ,自动调用  this 指向window(function () {})();

apply(obj.[]) 可以点用函数,也可以改变this指向

  var arr = [1,34,54,123,65,34];var max = Math.max.apply(Math,arr);console.log(max);

在这里插入图片描述
bind()函数用法

不调用原函数,但返回一个新函数

在这里插入图片描述
bind()最重要的用法

 var btn = document.querySelector('button');btn.onclick = function () {this.disabled = true;setTimeout(function () {this.disabled =false;}.bind(this),2000);}

开启严格模式
在这里插入图片描述注意:
严格模式下不能随便删除定好的变量
在这里插入图片描述

高阶函数
在这里插入图片描述
闭包是一个函数,能够访问另一个函数里面的变量. 作用是延伸了变量的作用域的范围

思考:

在这里插入图片描述

在这里插入图片描述

递归函数: 自己调用自己

 //斐波拉契数列function fb(n) {if (n == 1 || n == 2) {return 1;}return fb(n - 1) + fb(n - 2);}console.log(fb(3))

深拷贝浅拷贝

在这里插入图片描述

jquery里面的 extend

$.extend(true,o,arr);  //深拷贝$.extend(false,o,arr);  //浅拷贝

原生js写法

    function copy(target,obj) {//浅拷贝for (var item in obj){target[item] = obj[item];}}或者
Object.assign(o, arr);
  //浅拷贝var arr = {age: 68,name: 'liang',msg: {id: 90},color: ['red', 'green']};var o = {};function deepcopy(target, obj) {for (var k in obj) {var item = obj[k];//判断属性值 是否是一个数组if (item instanceof Array) {target[k] = [];deepcopy(target[k], item);}else if (item instanceof Object) {//判断属性值 是否是一个对象target[k] = {};deepcopy(target[k], item);} else {target[k] = item;}}}deepcopy(o, arr);console.log(o);o.msg.id = 80;console.log(arr);

在这里插入图片描述


http://chatgpt.dhexx.cn/article/l9jn1bUO.shtml

相关文章

ES5语法

从今天起,我们开始接触JS部分,先从ES5一些简单的语法入手。下面先看下思维导图,确定我们的学习思路: 今天我们先学习代码规范,数据类型以及数据类型转换三个模块 代码规范 JS中的一切都区分大小写 标识符&#xff1…

es5 es6 互相转换

- 工具:Visual Studio Code - 具体过程 1.新建项目,dist存放ES6格式的,src存放ES5格式的,如下 index.html内容,此处引用dist中的js 2.打开终端(ctrl ) npm需要安装,安装node即可…

套接字

套接字(socket)最早是由BSD在1982年引入的通信机制,目前已被广泛移植到主流的操作系统中。对于应用开发人员来说,套接字(socket)是一种特殊的I/O接口,也是一种文件描述符。socket是一种常用的进…

原始套接字简介

一 原始套接字概述 原始套接字,指在传输层下面使用的套接字。流式套接字和数据报套接字这两种套接字工作在传输层,主要为应用层的应用程序提供服务,并且在接收和发送时只能操作数据部分,而不能对IP首部或TCP和UDP首部进行操作&am…

网络套接字编程(socket 详解)

socket 编程 套接字概念 Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的&a…

Socket 套接字原理详解

Socket 套接字原理详解 socket 编程介绍 Socket编程封装了常见的TCP、UDP操作,可以实现非常方便的网络编程。 socket() 函数介绍 # socket.socket(family,type) tcpSocketsocket.socket(AF_INET, SOCK_STREAM) # family 地址系列应为 AF_INET(IPv4), AF_INET6(IP…

TCP的套接字

摘自:《深入理解计算机网络》 王达著 机械工业出版社 相关知识链接 1. IPV4数据报头部格式 2. IPv6数据报头部格式 3. IPv4数据报的封装与解封装 4. IPv4数据报的分段与重组 5. ARP协议报文格式及ARP表 6. ARP地址解析原理 7. ICMP协议及报文格式 8. IPv6协…

Socket(套接字)详解 画图+实例

Socket概念 Socket本意为“插座”,在Linux下,用于表示进程间网络通信的特殊文件类型,本质为内核借助缓冲区形成的伪文件。 既然是文件,那肯定就可以使用文件描述符引用套接字。与管道类似的,Linux系统将其封装成文件的…

Python中的套接字编程

文章目录 **连接到服务器:****一个简单的服务器客户端程序:****服务器****客户端** 套接字编程是一种连接网络上的两个节点以相互通信的方法。一个套接字(节点)侦听 IP 处的特定端口,而另一个套接字则伸向另一个套接字…

流式套接字基本概念

目录 流式套接字基本概念创建套接字绑定本地地址连接请求监听函数接收请求套接字IO操作关闭套接字 编程实现 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利…

Windows下套接字

一、套接字 windows套接字Socket是进程通信的一种方式,可以实现在不同主机的相关进程之间交换数据。在TCP/IP网络应用中,通信的两个进程的主要模式是客户/服务器(C/S)模式,即客户向服务器发出请求,服务器接受到请求后&#xf…

深入理解Socket套接字原理

Socket套接字原理 1、什么是Socket 在计算机领域,套接字Socket作为计算机之间进行通信的固定的约定方式之一存在。这种太抽象了,我举个例子,我们要是用笔记本电脑前需要先对电脑供电,那供电就有两种方式电线插座供电和电池供电&…

原始套接字

一、原始套接字概述 协议栈的原始套接字从实现上可以分为“链路层原始套接字”和“网络层原始套接字”两大类。 链路层原始套接字可以直接用于接收和发送链路层的MAC帧,在发送时需要由调用者自行构造和封装MAC首部。而网络层原始套接字可以直接用于接收和发送IP层…

socket套接字

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 socket套接字 1. 什么是socket套接字2. socket编程3. 网络字节序4. IP地址转换函数5. sockaddr数据结构…

java 套接字是什么_套接字是什么,套接字通信及其原理

为通信的端点,每个套接字由一个 IP 地址和一个端口号组成。通过网络通信的每对进程需要使用一对套接字,即每个进程各有一个。 通常,套接字采用客户机-服务器架构。服务器通过监听指定端口,来等待客户请求。服务器在收到请求后,接受来自客户套接字的连接,从而完成连接。 实…

网络编程——原始套接字实现原理

目录 1. 基础知识 1.1、概述 1.2、链路层原始套接字 1.3、网络层原始套接字 2、原始套接字的实现 2.1 原始套接字报文收发流程 2.2链路层原始套接字的实现 2.2.1 套接字创建 2.2.2 报文接收 2.2.3 报文发送 2.2.4 其它 2.3 网络层原始套接字的实现 2.3.1 套接字…

UDP套接字编程

参考:《UNIX 网络编程 卷1 : 套接字联网API》 UDP 与 TCP 之间传输存在差异,也导致编写应用程序存在很多差异。UDP 客户端和服务器不建立连接,而是直接使用 sendto 函数给服务器发送数据报。但必须指定目的地的地址作为参数。服务器也不用接…

网络套接字编程

网络套接字编程 一、 认识UDP协议 UDP(User Datagram Protocol 用户数据报协议,是不可靠的数据报传输协议,不确保数据安全有序的到达对端。 特点: 传输层协议无连接不可靠传输面向数据报 应用场景:性能要求大于安全要求&…

彻底弄懂套接字

1.什么是套接字(英文名:插座) 套接字(socket)是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行。Linux所提供的功能(如打…

什么是套接字?Socket基本介绍

什么是套接字?Socket基本介绍 一、什么是套接字?二、套接字特性三、套接字缓冲区 一、什么是套接字? 套接字是一种通信机制(通信的两方的一种约定),socket屏蔽了各个协议的通信细节,提供了tcp/…