大风起兮云飞扬

Results 27 comments of 大风起兮云飞扬

### 什么是promise.all promise.all传入多个promise对象 返回一个新的promise实例 promise.all返回的结果有如下几种状态 示例代码: `const result = promise.all(p1,p2,p3) ` **成功状态** 当p1 ,p2,p3 都执行完毕之后,且都返回success,那么promise.all,会返回一个数组,分别是三个promise对象的返回结果,状态为fullfilled。 **失败状态** 当p1,p2,p3 都执行完毕,只要其中任何一个出现错误,那么promise.all会返回一个当前的错误实例,状态为rejected。 **实现一个promise.all(般一下大佬的代码):** Promise.all = function (promises) { return new Promise((resolve, reject) => {...

父子: prop refs $children $parent $emit发送 v-on监听 兄弟: 子传父 父传子 vue-bus vuex

寄生组合式继承 类似于组合式继承 只不过组合式继承在实现时调用了两次超集 即实例化两次父类型,而寄生组合式继承只需调用一次超集,即利用构造函数继承属性 利用原型式继承方法。 **组合式继承实现如下:** ``` js function Super(text){ this.text = text this.like = ['唱','调','rap','篮球'] } Super.prototype.say=function(){ console.log(this.text) } function Suber(text){ Super.call(this,text) } Suber.prototype=new Super('cccccccccccc'); console.log(Suber.prototype.constructor); // Super Suber.prototype.constructor=...

基本数据类型有: String, Number,Boolean, undefined, null 引用数据类型有: object,function null 是对象 理解基本数据类型,和引用数据类型为 基本数据类型值 存放于栈内存中 引用数据类型 内存存放于堆内存中 只是向栈中保留一个指针 根据指针去取。

**借用构造函数继承?** ``` function Super(name){ this.name = name } function Suber(name){ Super.call(this,name) } const sub1 = new Suber('单身狗'); const sub2 = new Suber('没女票'); ``` 缺点: 无法继承原型链上的属性和方法 优点: 可以向构造函数传参,避免了原型链继承时引用类型的属性被共享。 **组合式继承** ``` function...

解决方案有如下几种 绝对定位: ```css position:abaolute; left:50%: top:50%: margin-left: -width/2; margin-top: -width/2; ``` 间距居中 ```css position-absolute: 上下左右都为0; margin:auto; ``` flex ```css display:flex jusicitify-content:center; align-items:center; ``` display:table-cell ```css display:table-cell; vertical-align:middle text-align:center; ``` 单行文本居中:...

**setTimeout为什么会出现倒计时误差** **首先说一下任务队列** js代码在执行的时候,会创建一个执行队列,会将代码区分为同步任务还是异步任务,从而进入不同的空间,同步任务会进入主线程,主线程的事件会立即执行,异步任务会进入任务队列,等待主线程的任务执行完毕之后 ,主线程没有正在执行的任务,那么这时主线程 或执行任务队列(我理解的,大佬称为任务队列)会通知任务队列即(所有异步任务的集合),异步任务又分为微任务与宏任务 , 执行异步任务时会先将微任务执行完毕,在去执行宏任务 依次循环 这个称之为事件循环。 常见的微任务有: `promise , async/await , process.nextTick` 常见的宏任务有: ` setTimeout、 setInterval ` **倒计时误差产生的原因** setTimout属于异步任务的宏任务 后面的参数代表延迟执行的时间,如果延迟时间完毕,主线程没有正在执行的任务,那么会立即执行settimeout,如果尚有正在执行的任务,那么会等待主线程任务执行完毕之后在执行,所以会产生误差。

1.使用set()方法 ``` var arrList = [1,2,3,4,5,6,1,2] function setArr(arr){ return new Set(arr) } console.log(setArr(arrList)) ``` 2. 使用indexOf() ``` var arrlist =[1,2,3,4,5,6,1,2] function removeSameNum(arr){ var newArr = [] for(var i=0;iobj[item] = item)...

**数组的可迭代方法:** 1. array.foreach 2. array.some 3. array.every 4. array.map 5. array.filter **对象的可迭代方法** 1. object.keys() 2.object.values() 3. for of 4. for in **实现 copy form [*https://github.com/luohong123*](url)** ``` function makeIterator(array){ var nextIndex...

**概念** Promise.all 返回的是传入的promise list 中每一单项调用之后的结果 Promise.race 返回的是传入的promise list 中最先返回的单项的调用结果 无论成功与否 **实现** ``` Promise.race= function(promises){ if(!Array.isArray(promises)){ throw new Error('not a array') } return new Promise(function(resolve,reject){ fucntion resolver(value){ reslove(value) } function rejecter(value){...