常见知识点总结

文章目录

for of和for in

都是常见的循环结构,允许我们遍历对象的属性或数组、字符串、Map、Set等可迭代对象的元素。

for in循环遍历的是对象的属性名,而不是属性值;会枚举出对象自身以及原型链上的所有可枚举属性,(除非该对象使用Object.prototype的hasOwnProperty方法来过滤掉原型链上的属性)

for of循环用于遍历可迭代对象的元素,for of循环直接遍历的是值,而不是键

for of循环遍历的是可迭代对象的元素值,而不是属性名。

区别

for in遍历的是对象的属性名,for of遍历的是可迭代对象的元素值

for in会遍历对象自身以及原型链上的属性,而for of只遍历对象自身的元素

for in适用于普通对象,for of适用于可迭代对象(数组,字符串,Map,Set)

同源策略

源的定义:如果两个url的协议,端口,主机都相同,则这两个url是同源的

在浏览器中,同源策略(Same-origin_policy)是一个重要的安全策略。用于限制不同源之间的资源交互。

跨域资源共享

是一种基于 HTTP 头的机制,该机制通过允许服务器指定允许浏览器访问的源来加载自己的资源。是一种基于 HTTP 头的机制,该机制通过允许服务器指定允许浏览器访问的源来加载自己的资源。

跨域问题

不同源之间的资源交互,就会存在跨域问题。比如:请求的接口不同源导致跨域

解决跨域
jsonp

原理是利用script标签不受浏览器同源策略的限制,和后端一起解决跨域问题

具体:在客户端创建一个script标签,然后把请求后端的接口拼接一个回调函数名称作为参数传给后端,并且赋值给script标签的src属性,然后把script标签添加到body中,当后端收到客户端的请求时,会解析得到回调函数的名称,然后把数据和回调函数名称拼接成函数调用的形式返回

cors方式

cors是跨域资源共享,是一种http头的机制,该机制通过允许服务器标示除了它自己以外的其他origin(域,协议和端口),使得浏览器允许这些origin访问加载自己的资源,服务端设置了Access-Control-Allow-Origin就开启了cors

nginx代理方式

nginx通过反向代理解决跨域,利用了服务器请求服务器不受浏览器同源策略的限制实现的。

apply,bind,call

相同点
  1. apply 、 call 、bind 三者都是用来改变函数的this对象的指向;
  2. apply 、 call 、bind 三者都可以利用后续参数传参;
不同点

在接受参数方面:call和bind接收多个参数,apply接受一个数组

call/apply 会让函数执行的

call后面参数是依次逗号分隔传入

apply:一个参数数组,数组成员是依次传入

bind 不会执行前面的函数!返回值:新的函数 和原来那个函数长的一样,内部this已经被我们固定

js判断数据类型的方式

typeof

通常判断基本数据类型,返回表示数据类型的字符串

注意:使用typeof来判断null和引用类型的实例 返回的结果都是 'object'。

instanceof

a instanceof A ,判断参照对象(大写字母A)的prototype属性所指向的对象是否在被行测对象a的原型链上。

instanceof 只能用来判断两个对象是否属于实例关系,而不能判断一个对象实例具体属于哪种类型。

对于number,string,boolean这三种基本数据类型,只有通过构造函数才能检测出

constructor

constructor是原型对象的属性指向构造函数,可以检测出除了undefined和null的9种类型(因为它两没有原生构造函数)

Object下的toString.call()方法
复制代码
Object.prototype.toString.call();
console.log(toString.call(123));          //[object Number]
console.log(toString.call('123'));        //[object String]
console.log(toString.call(undefined));    //[object Undefined]

闭包

闭包的作用

1.使用函数内部的变量在函数执行完以后,仍然存活在内存中(延长了局部变量的生命周期)

2.让函数外部可以操作(读写)到函数内部的数据(变量/函数)

注意

在函数外不能直接访问函数内部的局部变量

函数执行完之后,函数内部声明的局部变量一般不存在,存在于闭包中的变量才可能存在

闭包的生命周期

产生:在嵌套内部函数定义执行完时就产生了(不是在调用)

死亡:在嵌套的内部函数成为垃圾对象时

body-parser

中间件body-parser的作用是解析POST请求的请求体。然后我们可以通过req.body,获取到请求参数。

相关推荐
Lhan.zzZ3 分钟前
深入理解 windeployqt:混合 C++/Qt 项目的打包指南
开发语言·c++·qt
我命由我1234517 分钟前
Android 开发 - 广播组件(标准广播、有序广播、静态注册广播、分钟到达广播、网络变更广播...)
android·java·开发语言·网络·java-ee·android studio·android-studio
TDengine (老段)38 分钟前
TDengine Node.js 与 C# 连接器 — Web 服务与 .NET 集成
大数据·数据库·node.js·c#·.net·时序数据库·tdengine
米码收割机40 分钟前
【Python】Python Django+Vue3校园自习室预约管理系统(源码+文档+PPT)【独一无二】
开发语言·python·django
AstartesEternal1 小时前
python第二次作业(列表,字典)
开发语言·python
张元清1 小时前
React useUpdateEffect Hook:跳过首次渲染(2026)
javascript·react.js
星恒随风1 小时前
C++ STL 详解:set 与 multiset 的使用、区间查询和算法应用
开发语言·c++·笔记·学习·算法
数聚天成DeepSData1 小时前
外贸海关进出口数据去哪免费下载?从统计到明细的查找指南
linux·服务器·开发语言·前端·网络·人工智能·自然语言处理
再卷也是菜1 小时前
C++11支持并发库
开发语言·c++
Lhan.zzZ1 小时前
QML 开发中的“陷阱”:动态模型更新时,ComboBox 索引为何总是失效?
开发语言·qt