es6
文章平均质量分 62
Ginger_undefined
这个作者很懒,什么都没留下…
展开
-
手写bind, call, apply方法(二)
手写bind, call, apply方法(一)注意 在函数上应用 …arr 可以将数组变为参数序列function add(x,y){ return x+ y }var nums = [2,4]add(...nums)applyFunction.prototype.myApply = function(context, args){ if(context == null){ context = window }else{ context = Object(context)原创 2021-04-06 17:57:15 · 94 阅读 · 0 评论 -
手写bind, call, apply方法(一)
bindbind: 绑定一个函数的上下文. (改变函数的this指向)常见用例:let foo = function(){ console.log(this)}let boo = foo.bind({content: 'hello'})// bind只是绑定上下文,改变this,但是并不会执行,你需要自己手动执行foo() // windowboo() // {content: 'hello'}简单实现:版本1Function.prototype.bind = function原创 2021-04-06 16:40:10 · 143 阅读 · 0 评论 -
Promise.all() Promise.race()及其实现
Promise.all()Promise.all()方法接收一个promise的iterable类型。(Array、Map、Set都属于ES6的iterable类型)的属于,并且只返回一个promise实例。function promiseAll(promises){// Promise.all会返回一个promise return new Promise((resolve,reject)=>{ if(!Array.isArray(promises)){ return reject(原创 2021-04-05 23:19:09 · 725 阅读 · 0 评论 -
Promise.resolve() Promise.reject()实现
Promise.resolve()Promise.resolve方法有以下三种形式Promise.resolve(value)Promise.resolve(promise)Promise.resolve(thenable)Promise.resolve可以把,同步值value, 一个promise, 一个thenable类型的对象都包裹成一个新的Promise。如果是一个普通值,则返回一个resolved的promise实例,并且这个promise实例的状态是fulfilled, 值是va原创 2021-04-05 21:55:26 · 494 阅读 · 0 评论 -
promise的实现(如何手写一个promise)(下)
接上篇 promise的实现(如何手写一个promise)实现promise的链式调用第一个例子这是第一个例子,可以看到,promise的链式调用就是 可以.then().then().then()…这样一直调用下去。说明, .then() 执行完后会返回一个promise。 并且上一个.then返回的值会被resolve然后传给下一个then。第二个例子如果上一个.then你没有手动给一个返回值,那么就会将undefined传递给下一个.thenclass Promise{ const原创 2021-04-04 00:27:35 · 122 阅读 · 0 评论 -
promise的实现(如何手写一个promise)
如果你打算手动实现一个promise,你可能需要先问问自己,promise是什么?你平常最常见的promise是怎么样用的?new Promise((resolve,reject)=>{ resolve(2)}).then(val=>{ console.log(val)})如果你了解事件循环,你就知道,promise里面的回调函数是在立即执行的,而then中的回调任务是会被推入异步微队列中等待执行的。让我们先来捋捋这个Promise到底是个什么?Promise是异步函数的一种原创 2021-04-03 18:03:59 · 268 阅读 · 0 评论