js的数据类型
基本数据类型
- String
- Number
- Null
- Undefined
Boolean
引用数据类型
Object
- Array
字符串的方法
| 方法 | 描述 |
| :—-: | :—-: |
| indexOf | 返回字符串中检索指定字符第一次出现 |
| lastIndexOf | 返回字符串中检索指定字符最后一次出现 |
| subStr | 从起始位置截取指定数量 |
| subString | 从起始位置截取到结束位置 |
| slice | 提取字符串片段并在新的字符串返回被提取的部分 |
| split | 将字符串分割成数组 |
| replace | 替换与正则表达式匹配的字符串 |
| search | 检索与正则表达式相匹配的值 |
| concat | 连接多个字符串返回一个新的字符串 |
| charAt | 返回指定索引的字符 |
| charCodeAt | 返回指定索引位置字符的Unicode |
| toLocaleLowerCase | 根据主机的语言环境把字符串转为小写 |
| toLocaleYpperCase | 根据主机语言环境把字符串转为大写 |
| toString | 返回字符串对象值 |
| trim | 一处字符串首尾空白 |
es6新增字符串方法
| 方法 |
描述 |
| includes |
返回布尔值,表示是否找到了参数字符串 |
| startWith |
返回布尔值,表示参数字符串是否在原字符串的头部 |
| endsWith |
返回布尔值,表示参数字符串是否在原字符串的尾部 |
| repeat(n) |
返回新字符串,表示被重复n次 |
| padStart(n,str) |
补全头部长度为n,用str循环补充 |
| padEnd(n,str) |
不全尾部n下标之后,用str循环补充 |
| trimStart |
去除头部空格 |
| trimEnd |
去除尾部空格 |
| matchAll |
但会一个正则表达式在当前字符串的所有匹配 |
| replaceAll |
一次更换所有匹配,返回一个新的字符串 |
数字的方法
| 方法 |
描述 |
| Number.parseFloat |
将字符串换成浮点数,和全局方法parseFloat作用一致 |
| Number.parseInt |
将字符串换成整数,和全局的方法parseInt作用一致 |
| Number.isFinite |
判断参数是否为有限数字 |
| Number.isInteger |
判断传递的参数是否为整数 |
| Number.isNaN |
判断传递的参数是否为非数字 |
| Number.ISsafeInteger |
判断传递的参数是否为安全整数 |
数学的方法
| 方法 |
描述 |
| abs(x) |
返回数的绝对值 |
| acos(x) |
返回数的反余弦值 |
| ceil(x) |
向上取整 |
| floor(x) |
向下取整 |
| log(x) |
返回数的自然对数 |
| max(x,y) |
返回xy的最高值 |
| min(x,y) |
返回x和y的最低值 |
| pow(x,y) |
返回x的y次幂 |
| random |
返回0~1的随机数 |
| roud(x) |
四舍五入 |
es6数学增加的方法
| 方法 |
描述 |
| trunc(x) |
去除小数部分,返回整数部分 |
| sign |
判断一个属到底是正数,复数,还是零 |
| cbrt |
计算一个数的立方根 |
| clz32 |
将参数转为32位无符号整数,饭后返回这个32到位里面多少个0 |
| imul |
返回两个数以32位带符号整数相乘形式相乘的结过,返回一个32为带符号整数 |
| fround |
返回一个数的32位单精度浮点数形式 |
| hypot |
返回所有参数的平方和的平方根 |
日期方法
| 方法 |
描述 |
| getFullYear |
获取年份 |
| getTime |
返回至今的毫秒数 |
| Date |
返回当日的日和时间 |
| getDate |
获取本月某一天 |
| getDay |
返回星期几0~6 |
| getMonth |
返回月份0~11 |
| getHours |
返回小时0~23 |
| getMinutes |
返回分钟0~59 |
| getSeconds |
返回秒数 |
| getMilliseconds |
返回毫秒 |
| getTimezoneOffset |
返回本地时间与格伦分钟差 |
| setDate |
设置对象某一天 |
| setMonth |
设置某一月份 |
| setFullYear |
设置年份(四位数) |
| setTime |
以毫秒设置Date对象 |
| toString |
把Date对象转为字符串 |
| toTimeString |
把Date对象的时间部分转换为字符串 |
| toDateString |
把Date都西昂的日期部分转为字符串 |
| toLocaleString |
根据本地时间格式,转换为字符串 |
| toLocaleTimeString |
根据本地时间格式,把Date对象的时间部分转为字符串 |
| toLocaleDateString |
根据本地格式,把Date对象的日期部分转为字符串 |
数组的方法
| 方法 |
描述 |
| concat() |
链接两个过着更多的数组,并返回结果 |
| join(x) |
将数组以x分隔符分割为字符串 |
| pop() |
删除并且返回数组的最后一个元素 |
| push() |
数组末尾添加元素 |
| reverse() |
点到数组中元素的顺序 |
| shift() |
删除并返回数组的第一个元素 |
| slice() |
对某个已有的数组返回选定的元素 |
| sort() |
对元素进行排序 |
| splice() |
删除元素,并向数组添加新元素 |
| toSource() |
返回该对象的源代码 |
| toString() |
把数组转换为字符串,并返回结果 |
| toLocaleSting() |
把数组转换为贝蒂数组,并返回结果 |
| unshift |
在数组开头添加一个或者更多元素,返回新的数组 |
| indexOf |
查找数据在数组中是否存在,返回下标 |
es6数组新增方法
| 方法 |
描述 |
| … |
运算府 |
| apply |
将数组转换为函数的参数 |
| form |
将类数组转换为真正的数组 |
| of |
用于将一组值转换为数组 |
| copyWithin |
数组实例的方法,将指定位置成员复制到其他位置,会覆盖原有成员,然后返回当前数组 |
| find |
找出第一个符合条件的数组成员 |
| findIndex |
找出第一个符合条件的数组成员返回下标 |
| entries |
返回下标和数据 |
| keys |
返回下标 |
| values |
返回数据 |
| includes |
返回一个布尔值,表示某个数组是否包含给定的值 |
| flat() |
降维,只降低一维 |
| flatMap() |
对每个原数组成员执行一个函数 |
| forEach |
数组遍历 |
| filter |
过滤数组 |
| every |
一假为假,全真为真 |
| reduce |
求和等 |
| some |
全假为假,一真为真 |
| map |
遍历返回新数组 |
正则的方法
RegExp 对象方法
| 方法 |
描述 |
| compile |
编译正则表达式 |
| exec |
检索字符串中指定的值,返回找到的值,并确认其位置 |
| test |
检索字符串中指定的值。返回true或false |
支持正则表达式String的方法
| 方法 |
描述 |
| search |
检索与正则表达式相匹配的值 |
| match |
找到一个或者多个正则表达式的匹配 |
| replace |
替换与正则表达式匹配的字符串 |
事件对象
| 方法 |
描述 |
| onabort |
图像加载被中断 |
| onblur |
元素失去焦点 |
| onchange |
用户改变域的内容 |
| onclick |
鼠标点击某个对象 |
| ondbclick |
鼠标双击 |
| onerror |
加载文档或图像发生某个错误 |
| onfocus |
元素获得焦点 |
| onkeydown |
某个键盘的键被按下 |
| onkeypress |
某个键盘的键被按下或按住 |
| onkeyup |
某个键盘的键被松开 |
| onload |
某个页面或图像被完成加载 |
| onmousedown |
某个鼠标按键被按下 |
| onmousemove |
鼠标被移动 |
| onmouseout |
鼠标从某元素离开 |
| onmouseover |
鼠标被移动到某元素之上 |
| onmouseup |
鼠标案件被松开 |
| onreset |
重置按钮被点击 |
| onresize |
窗口或框架被调整尺寸 |
| onselect |
文本被选定 |
| onsubmit |
提交按钮被点击 |
| onunload |
用户退出页面 |
对象的所有方法
| 方法 |
描述 |
| .assign() |
将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象 |
| .create() |
用于指定的原型对象和属性创建一个新对象 |
| .defineProperty() |
将给定描述符描述的命名属性添加到对象 |
| .defineProperties() |
将给定描述符描述的命名属性添加到对象 |
| .entries() |
返回一个包含[key,value]给定对象自己的可枚举字符串属性的所有对的数组 |
| .freeze() |
冻结对象,其他代码无法删除或更改其属性 |
| .formEntries() |
从可迭代的[key,value]返回一个新的对象 |
| .getOwnPropertyDescriptor() |
返回对象的命名属性描述符 |
| getOwnPropertyNames() |
返回一个数组,其中包含给定对象自己的所有可枚举和不可枚举属性的名称 |
| getOwnPropertySymbols() |
返回直接在给定对象上找到所有符号属性的数组 |
| .is() |
比较两个值是否相同 |
| .isExtensible() |
确定是否允许扩展对象 |
| .isFrozen() |
确定对象是否被冻结 |
| .isSealed() |
确定对象是否密封 |
| .keys() |
返回一个数组,包含给定对象所有可枚举字符串类型的名称 |
| .preventExtensions() |
防止其他代码删除对象的属性 |
| .seal() |
防止其他代码删除对象的属性 |
| .setPrototypeOf() |
设置对象的原型 |
| .values |
返回一个数组,该数组包含给定对象自己所有可枚举字符串对应的值 |
Symbol
Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突
Set和Map
Set
ES6提供了新的数据结构Set。他类似于数组,但是成员的值都是唯一的,没有重复的值
Map
JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制,而Map的key值可以是任意属性
Proxy
Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。
Promise
用于将异步代码同步化
Promise有三种状态,pending(进行中)、fulfilled(操作已成功)、rejected(操作已失败)一旦状态改变,就不会再改变
- 执行全局js同步代码,这些同步代码有一些式同步语句,有一些是异步语句
- 先执行全局的同步代码,遇到异步语句会区分是微任务(microtask)还是宏任务(macrotask),并分别放入微队列和宏队列
- 待同步代码执行完毕,stack调用栈会清空
- 从微队列取出队首的任务,放入调用栈stack执行,微队列长度减一
- 继续取出队首的位置,放入stack调用栈中执行,直到把所有微任务执行完毕,此时微任务队列被清空,调用栈也为空
- 取出宏队列中位于首位的任务,放入stack中执行
- 执行完毕后,调用栈为空
重复3-7个步骤直到加载完毕
window.requestAnimationFrame是什么
告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行 语法:window.requestAnimationFrame(callback); callback 下一次重绘之前更新动画帧所调用的函数(即上面所说的回调函数)。该回调函数会被传入DOMHighResTimeStamp参数,该参数与performance.now()的返回值相同,它表示requestAnimationFrame() 开始去执行回调函数的时刻。 返回值 一个 long 整数,请求 ID ,是回调列表中唯一的标识。是个非零值,没别的意义。你可以传这个值给 window.cancelAnimationFrame() 以取消回调函数。
new之后干了什么
创建一个空对象,空对象的proto去继承构造函数的prototype
- 属性和方法被加入到this引用对象中
- 新创建的对象由this所引用,最后隐式返回this
bind、call、apply区别
首先三者都是用来改变this指向的,他们的第一个参数都是this要指向的对象,如果有null或者 undefined则指向window,他们都可以传参,apply接收一个数组,call和bind接收参数列表, 而且bind咳哟分多次传入,bind返回一个绑定this之后的函数,而apply和call时立即执行
git的使用
git分布式管理工具下载完可以离线操作 svn是集中式管理工具必须在线操作
请求和响应报文
- 请求报文:请求行、请求头部、空行、请求数据
- 响应报文:响应行、响应头、空行、响应体
用什么管理软件生命周期 spasvo ALM 管理
- 可行性研究阶段 (定义期)
- 需求分析阶段
- 概要设计阶段 (开发期)
- 详细设计阶段
- 开发实现阶段
- 测试阶段
- 部署阶段 (部署期)
维护阶段
作用域和作用域链
全局作用域:在任何地方都能被访问,window对象下的内置属性都是全局作用域
函数作用域:固定代码片段中 作用域链:作用域都有上下级关系,上下级关系确定函数在哪个作用域下创建,变量取值都会在当前作用域中查找,如果没有查到就会像上级作用域查找,直到查到全局作用域,这个查找的过程叫做作用域链
原型和原型链
先说实例、构造函数和原型对象之间的关系 实例在调用方法时,如果在本身没有找到,就会在原型对象上查找,如果也没有找到,就会再向上一级原型对象查找,一直找到Object.prototype ;如果中间找到会停止查找返回该方法。如果一直没找到会返回未定义;
浏览器输入url到页面加载发生了什么
浏览器的地址栏输入URL并按下回车。 浏览器查找当前URL是否存在缓存,并比较缓存是否过期。 DNS解析URL对应的IP。根据IP建立TCP连接(三次握手)。 HTTP发起请求。服务器处理请求,浏览器接收HTTP响应。 渲染页面,构建DOM树。 关闭TCP连接(四次挥手)
移动端适配
百分比方案:使用百分比定义宽度高度,根据可视区域实时尺寸进行调整,尽可能适应各种分辨率,通常使用max-width/min-width控制尺寸范围过大或者过小;
- rem :rem根据根元素html的font-size计算值的倍数,根据屏幕宽度动态设置html标签的font-size,在布局的时候使用rem单位布局,达到自适应布局
- vh/vw方案 : 1vw = 视口宽度的1%,通过css预处理器把设计稿转换为vw单位,包括文本,布局,间距等。 出现的问题:在用到1px的border的时候直接使用1px