数字的方法
方法 | 描述 |
---|---|
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 对象的日期部分转为字符串 |
正则的方法
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(操作已失败) 一旦状态改变,就不会再改变
- .then 调用成功状态的回调函数
- .catch 调用错误状态的回调函数
- .finally 无论状态如何都会执行的操作
- .all()接受一个可迭代对象,等待多个同步或者异步任务执行完毕
- .race()接收一个可迭代对象,返回最先返回结果的
- .any()接收一个可迭代对象,只要有一个 promise 成功就返回成功的 promise
如何过去元素和视口的距离
getBoundingClientRect 返回一个对象,是一组矩形的集合,返回的值主要是 left、top、bottom、right、width、height、x、y。
left 是元素左边框距离视图左侧的距离
right—————
top 是元素上边框距离视图顶部的距离
bottom————-
width 元素宽度
height 元素高度
x 元素的 x 轴
y 元素的 y 轴
介绍一下 webpack
webpack 是一个前端模块化打包工具,主要由入口,出口,loader,pluguns 四个部分,前端的打包工具还有一个 gulp,不过 gulp 重于前端开发的过程,而 webpack 侧重于模块,例如他会将 css 文件看作一个模块,通过 css-loader 将 css 打包成符合 css 的静态资源
es6 箭头函数和普通函数的区别
普通 function 的声明在变量提升中是最高的,箭头函数没有函数提升
箭头函数没有 arguments
箭头函数不能作为构造函数,不能被 new,没有 property
call 和 apply 方法只有参数,没有作用域
什么是闭包,闭包有什么危害,如何解决闭包带来的危害
简单来说,闭包就是定义在函数内部的函数,因为 js 中存在作用域的问题,所以在函数内部定义的变量在函数外部是没有办法直接获取到,而闭包就是沟通函数内部和外部的桥梁,这样在函数外部直接可以得到函数内部的值,并且闭包可以实现函数属性和方法的私有化
闭包的危害
因为闭包会将内部变量存储在内存中,如果长时间不清除的话会造成内存泄漏的问题,影响程序的性能
解决方法:对于不使用的变量及时的清除
不使用第三个变量交换值
1 | a=1 b=2 |
prototype 和proto和 constructor
什么是构造函数?
答:通过关键字 new 创建的函数叫做构造函数,用来创建一个对象
什么是原型 prototype?
答:每一个函数都有一个 prototype 属性,这个属性指向一个对象,简称原型
原型有什么作用?
节约内存、扩展属性和方法、实现类的继承
proto是什么?
每一个对象都有一个proto属性,指向创建自己的哪个构造函数的原型
对象可以直接访问自己proto里面的属性和方法
constructor 指向创建自己那个构造函数。
三者关系:
当我们创建一个构造函数的时候这个构造函数自带了一个 prototype 属性,而这个属性指向一个对象,也就是原型对象。这个原型对象里面有一个 constructor 构造器,它的作用是指向创建自己的构造函数。除此之外 prototype 还可以存放公共的属性和方法。当我们实例化一个对象的时候,这个对象自带了一个proto属性,这个proto指向创建自己的构造函数的原型对象
eventLoop
event loop 是一个执行模型,在不同的地方有不同的实现.浏览器和 nodejs 基于不同的技术实现了各自的 event loop。
浏览器的 event loop 具体的 js 代码具体流程:
- 执行全局 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
- Post link: https://blog.gaocaipeng.com/2020/03/06/swikvk/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.