前端面试准备-7
1.定义class的实现
//定义class
class Person{//公有属性nameage = 18//构造函数constructor(name){//构造函数内部的this实例化对象this.name = name//动态添加属性(不推荐)this.food = ['🐂','🐎','🐏']}//公有方法sayHi(){console.log('你好: '+this.name)}
}
const p = new Person('山里灵活')
p.sayHi()
console.log(p)
2.class实现继承
extends:用于类声明或类表达式中,创建一个类,该类是另一个类的子类
super:访问对象字面量或类的原型上的属性,或调用父类的构造函数
class Student extends Person{sexconstructor(name,sex){super(name)this.sex = sex}
}
3.class静态属性和私有属性
静态:类通过static关键字定义静态方法。不能再类的实例上调用静态方法,而必须类本身调用。
私有:类属性默认是公有,但可以使用增加哈希前缀#的方法来定义私有类字段,声明和访问时也需要加上。
/*** 静态属性* 定义时:static开头* 访问时:通过类来访问* 私有属性* 定义时: #开头* 使用时: #开头,和定义的名字相同,只能在类的内部使用*/
class Test{static stInfo = '静态'static stMethod(){console.log('我是静态方法')}#prInfo = '私有'#prMethod(){console.log('我是私有方法')}testPr(){console.log(this.#prInfo)this.#prMethod()}
}//访问静态属性和方法
Test.stMethod()
console.log(Test.stInfo)const t = new Test()
t.testPr()
4.Object.create的使用
// ——————————Object.create测试——————————const foods ={name:'泥吧',eat(){console.log(`他们朝我扔${this.name}`)}
}//Object.create 静态方法
//将一个对象作为原型,创建一个新的对象
//参数1 : 源对象
//参数2 : 可以用来覆盖源对象中的特定属性/方法
const nFood1 = Object.create(foods)
console.log(nFood1)
nFood1.eat() // 打印他们朝我扔泥吧
const nFood2 = Object.create(foods,{eat:{value(){console.log('我拿泥吧做蛋挞~')}}
})
console.log(nFood2)
nFood2.eat() //打印我拿泥吧做蛋挞~
5.寄生组合式继承
所谓寄生组合式继承,即通过借用构造函数来继承属性,通过原型链的混成形式来继承方法。
//寄生组合式继承
function Persons(name){this.name = name
}
Persons.prototype.sayHello = function () {console.log(`hello,my name is ${this.name}`)
}// —————————— 寄生组合式继承 核心代码 ——————————
//通过构造函数继承属性
// 组合式继承:借用构造函数,原型链
// 寄生:父类的原型中,有子类的构造函数
function Students(name){Persons.call(this,name)
}
//通过原型链继承方法
const prototype = Object.create(Persons.prototype,{constructor:{value: Students}
})
// 将创建的原型。赋值给子类的原型
Students.prototype = prototype
const ss = new Students('vw50')
console.log(ss)
console.log(ss.sayHello())
6.fetch核心语法
fetch是浏览器内置的api,用于发送网络请求
能进行发送网络请求的工具:
AJAX vs axios vs fetch
- AJAX:基于XMLHttpRequest收发请求,使用较为繁琐
- axios:基于Promise的请求客户端,在浏览器和node中均可使用,使用简便,功能强大
- fetch:内置api,基于Promise,用法和axios类似,功能更为简单
* fetch核心语法
* 1.如何发送请求
* 2.如何处理响应(JSON)?
* 3.如何处理异常?
<template><h3>fetch核心语法</h3><button class="btn">测试</button>
</template>
<script setup>
import { onMounted } from 'vue'/*** fetch核心语法* 1.如何发送请求* 2.如何处理响应(JSON)?* 3.如何处理异常?*/
onMounted(()=>{document.querySelector('.btn').addEventListener('click',async()=>{const p = new URLSearchParams({pname:'广东省',cname:'深圳市'})//1.如何发送请求?默认是get方法,参数1,url地址,返回的Promiseconst res = await fetch('http://hmajax.itheima.net/api/area?'+p.toString())if(res.status >=200 && res.status< 300){//如何处理响应(JSON)?.json方法解析json.返回Promiseconst data = await res.json()console.log(data)}else{console.log('请求异常',res.status)}
})
})
</script>
7.fetch - 提交FormData
·如何设置请求方法
·如何提交数据
async function fuc(){const res = await fetch('请求地址',{method:'请求方法',body:'提交数据'})
}
8.fetch提交JSON
·如何设置请求头
async function func(){const headers = new Headers()headers.append('key','value')const res = await fetch('请求地址',{method: '请求方法',body: '提交数据',headers:headers})
}
document.getElementById('bt').addEventListener('click',async()=>{//实例化Headers对象const headers = new Headers()//append添加key-valueheaders.append('content-type','application/json')fetch('http://hmajax.itheima.net/api/register',{method:'post',headers,//JSON.stringify 对象 -> JSONbody: JSON.stringify({username:'山里灵活6666',password:'1234565'})})})
9.跨域问题
前端的跨域问题是指浏览器基于同源策略阻止网页发起不同源的请求,防止恶意访问用户信息。
同源指的是:协议、域名、端口号必须完全相同。
①:CORS
- 由服务器设置响应头
Access-Control-Allow-Origin: https://example.com//或Access-Control-Allow-Origin: *
- 示例(Node.js Express):
app.use((req, res, next) => {res.setHeader('Access-Control-Allow-Origin', '*');next();
});
②JSONP(只能用于 GET 请求)
利用 <script>
标签不受同源限制的特性。
<script src="http://example.com/api?callback=handleData"></script>
<script>function handleData(data) {console.log(data);}
</script>
③:代理转发(开发环境常用)
通过本地开发服务器代理接口,绕过跨域。
- 在 Vite 中配置代理:
// vite.config.js
export default {server: {proxy: {'/api': {target: 'http://backend-server.com',changeOrigin: true,rewrite: path => path.replace(/^\/api/, '')}}}
}
- 在 Webpack 中配置 devServer:
// webpack.config.js
devServer: {proxy: {'/api': {target: 'http://backend-server.com',changeOrigin: true}}
}
④:Nginx 反向代理
生产环境跨域推荐做法,配置示例:
location /api/ {proxy_pass http://backend-server.com/;add_header Access-Control-Allow-Origin *;
}
⑤:PostMessage 通信(iframe 跨域)
用于两个不同源页面之间通信。
// 页面A 发送消息
iframe.contentWindow.postMessage('Hello', 'https://b.com');// 页面B 接收消息
window.addEventListener('message', (event) => {console.log(event.data);
});
相关文章:
前端面试准备-7
1.定义class的实现 //定义class class Person{//公有属性nameage 18//构造函数constructor(name){//构造函数内部的this实例化对象this.name name//动态添加属性(不推荐)this.food [🐂,🐎,🐏]}//公有方法sayHi(){c…...

黑马Java面试笔记之框架篇(Spring、SpringMvc、Springboot)
一. 单例bean Spring框架中的单例bean是线程安全的吗? Spring框架中的bean是单例的,可以在注解Scope()进行设置 singleton:bean在每一个Spring IOC容器中只有一个实例。prototype:一个bean的定义可以有多个实例 总结 二. AOP AOP称…...

全球IP归属地查询接口如何用C#进行调用?
一、什么是全球IP归属地查询接口 在全球化互联网时代,IP地址作为网络世界的地理位置标识,扮演着至关重要的角色。全球IP归属地查询接口通过解析IP地址,提供包括国家、省、市、区县和运营商在内的详细信息。 二、应用场景 1. 访问识别 全球…...

NumPy 比较、掩码与布尔逻辑
文章目录 比较、掩码与布尔逻辑示例:统计下雨天数作为通用函数(Ufuncs)的比较运算符使用布尔数组计数条目布尔运算符 布尔数组作为掩码使用关键字 and/or 与运算符 &/| 的区别 比较、掩码与布尔逻辑 本文介绍如何使用布尔掩码来检查和操…...

力扣HOT100之二分查找:35. 搜索插入位置
这道题属于是二分查找的入门题了,我依稀记得一些二分查找的编码要点,但是最后还是写出了一个死循环,无语(ˉ▽ˉ;)…又回去看了下自己当时的博客和卡哥的视频,这才发现自己分情况只分了两种,最后导致死循环…...

使用API有效率地管理Dynadot域名,查看域名市场中所售域名的详细信息
关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…...

IM即时通讯软件,构建企业局域网内安全协作
安全与权限:协同办公的企业级保障 在协同办公场景中,BeeWorks 将安全机制贯穿全流程。文件在局域网内传输与存储时均采用加密处理,企业网盘支持水印预览、离线文档权限回收等功能,防止敏感资料外泄;多人在线编辑文档时…...

VueScan:全能扫描,高清输出
在数字化办公和图像处理的领域,扫描仪扮演着不可或缺的角色。无论是文档的数字化存档、照片的高清复制,还是创意项目的素材采集,一款性能卓越、操作便捷的扫描软件能大幅提升工作效率和成果质量。VueScan正是这样一款集多功能于一身的扫描仪软…...

PyCharm项目和文件运行时使用conda环境的教程
打开【文件】—【新建项目】 按照下图配置环境 可以看到我这个项目里,报错“No module named modelscope” 点击终端,输入命令 #显示所有的conda环境 conda env list #选择需要激活的conda环境 conda activate XXX在终端中,执行pip install …...
第八部分:第五节 - 生命周期与副作用 (`useEffect` Hook):组件的幕后工作
知识点: 组件生命周期(挂载 Mounting, 更新 Updating, 卸载 Unmounting - 高级概念),副作用 (Side Effects),useEffect Hook (用于处理副作用,如数据获取、订阅、DOM 操作),useEffect 的依赖数组…...
docker 搭建php 开发环境 添加扩展redis、swoole、xdebug(2)
3、创建compose 的yml文件 version: "3.9" services:#配置nginxnginx:#镜像名称 nginx:latestimage: nginx#自定义容器的名称#container_name: c_nginxports:- "80:80"#lnmp目录和容器的/usr/share/nginx/html目录进行绑定,设置rw权限#将宿主机的~/lnmp/…...

DeepSwiftSeek 开源软件 |用于 DeepSeek LLM 模型的 Swift 客户端 |轻量级和高效的 DeepSeek 核心功能通信
一、软件介绍 文末提供程序和源码下载 DeepSeek Swift SDK 是一个轻量级且高效的基于 Swift 的客户端,用于与 DeepSeek API 进行交互。它支持聊天消息完成、流式处理、错误处理以及使用高级参数配置 DeepSeekLLM。 二、Features 特征 Supports chat completion …...

Flask-Login使用示例
项目结构 首先创建以下文件结构: flask_login_use/ ├── app.py ├── models.py ├── requirements.txt └── templates/├── base.html├── index.html├── login.html├── register.html└── profile.html1. requirements.txt Flask2.3.3 Fl…...
React Hooks 基础指南
React Hooks 是 React 16.8 引入的重要特性,它允许开发者在函数组件中使用状态和其他 React 特性。本文将详细介绍 6 个最常用的 React Hooks。 1. useState useState 是最常用的 Hook,用于在函数组件中添加 state。 import React, { useState } from…...

web第九次课后作业--SpringBoot基于mybatis实现对数据库的操作
前言 在前面我们学习MySQL数据库时,都是利用图形化客户端工具(如:idea、datagrip),来操作数据库的。 在客户端工具中,编写增删改查的SQL语句,发给MySQL数据库管理系统,由数据库管理系统执行SQL语句并返回执…...
沪铜6月想法
市场回顾 2025年5月,沪铜期货主力合约价格整体呈现震荡走势。从月初到月末,价格在7.67-7.82万元/吨之间波动。截至5月31日,沪铜主力合约收盘价为7.76万元/吨。本月铜价围绕供需基本面和宏观政策预期展开波动,尤其在5月14日至5月1…...
网络通信核心概念全解析:从IP地址到TCP/UDP实战
一、网络基础架构三要素 1. IP地址:互联网的“门牌号” 本质:32位整数标识主机位置(IPv4)表示法:点分十进制(如 192.168.1.1)功能:全球唯一标识网络设备特殊地址: 127.…...
Spring 中的disposableBean介绍
在 Spring 框架中,DisposableBean 是一个接口,用于定义 Bean 在被销毁前需要执行的清理逻辑。它是 Spring 容器生命周期回调机制的一部分。 🌱 什么是 DisposableBean DisposableBean 接口是 Spring 提供的一个标准接口,用于通知…...
【Linux命令学习】获取cpu信息 - lscpu命令学习
lscpu命令显示的是服务器cpu架构相关信息,lscpu从伪文件系统(sysfs)、/proc/cpuinfo和任何可用的特定体系架构库中收集cpu架构信息。输出内容包括:CPU、线程、内核的数量以及非同一存储器存取节点。此外还包括关于CPU高速缓存和高速缓存共享的信息&#…...

wordpress免费主题网站
这是一款WordPress主题,由jianzhanpress开发,可以免费下载。专为中小微企业设计,提供专业的网站建设、网站运营维护、网站托管和网站优化等服务。主题设计简约、现代,适合多种行业需求。 主要特点: 多样化展示&#…...

Go中的协程并发和并发panic处理
1 协程基础 1.1 协程定义(Goroutine) 概念:Go 语言特有的轻量级线程,由 Go 运行时(runtime)管理,相比系统线程(Thread),创建和销毁成本极低,占用…...

Qt Creator工具编译器配置
1、打开Qt Creator,工具-->选项 2、选择"编译器",Manual配置编译器。 初始化填入“C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe”,选择64位amd64。 ABI根据msvc版本进行选择msvc2015. 3、新建项目…...
从零开始的数据结构教程(六) 贪心算法
🍬 标题一:贪心核心思想——发糖果时的最优分配策略 贪心算法 (Greedy Algorithm) 是一种简单直观的算法策略。它在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望得到一个全局最优解。这就像你…...

Spring框架学习day7--SpringWeb学习(概念与搭建配置)
SpringWeb1.SpringWeb特点2.SpringWeb运行流程3.SpringWeb组件4.搭建项目结构图:4.1导入jar包4.2在Web.xml配置**4.2.1配置统一拦截分发器 DispatcherServlet**4.2.2开启SpringWeb注解(spring.xml) 5.处理类的搭建6.SpringWeb请求流程(自己理…...

打造高效多模态RAG系统:原理与评测方法详解
引言 随着信息检索与生成式AI的深度融合,检索增强生成(RAG, Retrieval-Augmented Generation) 已成为AI领域的重要技术方向。传统RAG系统主要依赖文本数据,但真实世界中的信息往往包含图像、表格等多模态内容。多模态RAG…...
SSM 框架核心知识详解(Spring + SpringMVC + MyBatis)
🌱 第一部分:Spring 核心原理与使用 1. 什么是 Spring Spring 是一个开源的 Java 企业级开发框架,旨在简化 Java 企业应用程序开发。它核心思想是控制反转(IoC)和面向切面编程(AOP)࿰…...
1.2 fetch详解
浏览器 Fetch API 详解 Fetch API 是现代浏览器提供的用于发起网络请求的接口,它基于 Promise 实现,替代了传统的 XMLHttpRequest,提供了更强大、更灵活的功能。 1. 基本用法 使用 fetch() 函数发起请求,返回一个 Promise&…...

【C#】Quartz.NET怎么动态调用方法,并且根据指定时间周期执行,动态配置类何方法以及Cron表达式,有请DeepSeek
🌹欢迎来到《小5讲堂》🌹 🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!&#…...

02 Deep learning神经网络的编程基础 逻辑回归--吴恩达
逻辑回归 逻辑回归是一种用于解决二分类任务(如预测是否是猫咪等)的统计学习方法。尽管名称中包含“回归”,但其本质是通过线性回归的变体输出概率值,并使用Sigmoid函数将线性结果映射到[0,1]区间。 以猫咪预测为例 假设单个样…...
Android Native 内存泄漏检测全解析:从原理到工具的深度实践
引言 Android应用的内存泄漏不仅发生在Java/Kotlin层,Native(C/C)层的泄漏同样普遍且隐蔽。由于Native内存不受Java虚拟机(JVM)管理,泄漏的内存无法通过GC自动回收,长期积累会导致应用内存占用…...