js
kieyooo
这个作者很懒,什么都没留下…
展开
-
利用promise简单实现Promise.all()和Promise.race()
Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例. const p = Promise.all([p1, p2, p3]); 上面代码中,Promise.all()方法接受一个数组作为参数,p1、p2、p3都是 Promise 实例,如果不是,就会先调用下面讲到的Promise.resolve方法,将参数转为 Promise 实例,再进一步...原创 2019-12-22 23:34:10 · 609 阅读 · 0 评论 -
js继承
function Animal(name){ this.name = name || 'Animal', this.sleep = function(){ console.log(this.name + "is sleeping!"); } } Animal.prototype.eat = function(food) { console.log(this.name + "...原创 2019-08-06 21:33:16 · 77 阅读 · 0 评论 -
js中各种位置
每次都会把js一些位置的属性搞混。。。先做个笔记 clientHeight 内容可视区域的高度。包括padding不包括border、水平滚动条、margin。对于inline的元素这个属性一直是0,单位px,只读元素。 offsetHeight offsetHeight = clientHeight + border + 滚动条。对于inline的元素,这个属性一直是0,单位px,只读元素...原创 2019-08-01 19:31:54 · 506 阅读 · 0 评论 -
实现一个基本的Promise
// 未添加异步处理等其他边界情况 // ①自动执行函数,②三个状态,③then class Promise { constructor (fn) { // 三个状态 this.state = 'pending' this.value = undefined this.reason = undefined let resolve = value =>...原创 2019-07-31 22:22:25 · 113 阅读 · 0 评论 -
手写实现AJAX
简单流程// 实例化 let xhr = new XMLHttpRequest() // 初始化 xhr.open(method, url, async) // 发送请求 xhr.send(data) // 设置状态变化回调处理请求结果 xhr.onreadystatechange = () => { if (xhr.readyStatus === 4 && xhr.s...原创 2019-07-31 22:21:27 · 162 阅读 · 0 评论 -
浅拷贝与深拷贝
浅拷贝// 1. ...实现 let copy1 = {...{x:1}} // 2. Object.assign实现 let copy2 = Object.assign({}, {x:1}) 实现一个基本的深拷贝// 1. JOSN.stringify()/JSON.parse() let obj = {a: 1, b: {x: 3}} JSON.parse(JSON.stringif...原创 2019-07-31 22:18:44 · 87 阅读 · 0 评论 -
js实现懒加载和拖拽
实现懒加载<ul> <li><img src="./imgs/default.png" data="./imgs/1.png" alt=""></li> <li><img src="./imgs/default.png" data="./imgs/2.png" alt=""></li> <li&...原创 2019-07-31 22:11:22 · 142 阅读 · 0 评论 -
节流和防抖
实现一个节流函数 规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。 鼠标不断点击触发,mousedown(单位时间内只触发一次) 监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断 function throttle (fn, delay) { // 利用闭包保存时间 let prev = Date.now() retu...原创 2019-07-31 22:04:04 · 122 阅读 · 0 评论 -
new的模拟实现五部曲
用new Object() 的方式新建了一个对象 obj 取出第一个参数,就是我们要传入的构造函数。此外因为 shift 会修改原数组,所以 arguments 会被去除第一个参数 将 obj 的原型指向构造函数,这样 obj 就可以访问到构造函数原型中的属性 使用 apply,改变构造函数 this 的指向到新建的对象,这样 obj 就可以访问到构造函数中的属性 判断返回的值是不是一个对象,如...原创 2019-07-31 21:53:28 · 173 阅读 · 0 评论 -
实现call,apply,bind函数
实现一个call函数// 思路:将要改变this指向的方法挂到目标this上执行并返回 Function.prototype.mycall = function (context) { if (typeof this !== 'function') { throw new TypeError('not funciton') } context = context || win...原创 2019-07-31 19:52:06 · 134 阅读 · 0 评论