![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码实现
Bliss_妍
这个作者很懒,什么都没留下…
展开
-
实现每隔1秒,两秒,3秒输出1,2,3
let print = new Print()print.task(1000, () => { console.log(1)}).task(2000, () => { console.log(2)}).task(3000, () => { console.log(3)}).start()function Print() { this.list = [] this.task = (time, fn) => { thi.原创 2020-09-03 16:42:21 · 1155 阅读 · 0 评论 -
让if (a === 1 && a === 2 && a === 3)条件成立
一、利用Object.defineProperty()方法var value = 1;Object.defineProperty(window, "a", { get () { return this.value++; }})if (a === 1 && a === 2 && a === 3) { console.log('成立')}二、数组var arr = [1, 2, 3];Object.defineProperty(window,...原创 2020-09-03 14:49:55 · 205 阅读 · 0 评论 -
让if(a == 1 && a == 2 && a == 3)条件成立的办法
一、重写valueOf()// 1var a = { value: 0, valueOf () { return ++this.value }}if (a == 1 && a == 2 && a == 3) { console.log('成立')}二、重写valueOf()和toString()var a = { value: 0, toString () { return ++this.value }}if (...原创 2020-09-03 14:49:20 · 1043 阅读 · 0 评论 -
实现sum(1)、sum(1)(2)
function f () { /* 代码 */}console.log(f(1) == 1)console.log(f(1)(2) == 3)console.log(f(1)(2)(3) == 6)在函数f内用一个变量数组来存放参数集合,然后返回一个函数(我命名为inner),这个inner函数的作用是收集传递进来的参数将它添加到参数集合中。function f () { let args = [...arguments] var add = function () { ...原创 2020-09-03 14:48:46 · 1464 阅读 · 0 评论 -
bind方法实现
Function.prototype.mybind = function (context, ...args) { var _this = this function F() { args = args ? [...args, ...arguments] : [...arguments] F.prototype.__proto__ = new _this(...args) _this.apply(context, args) } return F}原创 2020-08-28 16:59:55 · 128 阅读 · 0 评论 -
Promise.settled实现
let allSettled = (funcArr) => { return new Promise((resolve) => { let sttled = 0 let result = [] for(let index = 0;index<funcArr.length;index++){ const element = funcArr[index] element .then(res => { re.原创 2020-08-28 15:03:19 · 817 阅读 · 1 评论 -
sleep方法实现
<!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /&g...原创 2020-08-28 10:50:27 · 182 阅读 · 0 评论 -
实现倒计时
<!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /&g...原创 2020-08-28 10:47:36 · 123 阅读 · 0 评论 -
获得页面的所有节点数
// 递归函数function countNodes(node) { // 计算自身 var count = 1; // 判断是否存在子节点 if(node.hasChildNodes()) { // 获取子节点 var cnodes = node.childNodes; // 对子节点进行递归统计 for(var i=0; i<cnodes.length; i++) { .原创 2020-08-28 10:15:24 · 578 阅读 · 0 评论 -
二叉树中任意两个节点之间的最短路径
思路:两个节点之间的最短路径一定会经过两个节点的最小公共祖先,所以我们可以用LCA(最低公共祖先)的解法。不同于LCA的是,我们返回不只是标记,而要返回从目标结点递归回当前节点的路径。当遇到最小公共祖先的时候便合并路径。需要注意的是,我们要单独处理目标节点自身是最小公共祖先的情况。Java代码实现如下:public LinkedList<TreeNode> helper(TreeNode n, TreeNode p, TreeNode q){ if(n == null){.原创 2020-08-28 08:19:28 · 2907 阅读 · 0 评论 -
instanceof实现
function myInstanceof (left, right) { let proto = left.__proto__ let protoType = right.prototype while (true) { if (proto === null) { return false } if (proto === protoType) { return true } proto = proto.__proto__ }}原创 2020-08-28 08:12:40 · 56 阅读 · 0 评论 -
版本号排序
arr.sort((a, b) => { let i = 0 const arr1 = a.split('.') const arr2 = b.split('.') while (true) { const s1 = arr1[i] const s2 = arr2[i++] if (s1 === undefined || s2 === undefined) { return arr2.leng.原创 2020-08-27 17:09:44 · 398 阅读 · 0 评论 -
实现get函数,对于异常情况做处理返回值
const a = { b: { c: { d: [ {val: 2} ] } }}function get (obj, property, defaultValue) { let p = property.split('.') let len = p.length let cur = obj for (let i = 0; i < len; i++) { if (p[i].indexOf('[') === -1) { if (cur[p[i]) { .原创 2020-08-27 14:52:57 · 451 阅读 · 0 评论 -
VUE EventEmit实现
Vue里面用过eventBus作为通信方式,实现方式是用Vue函数的$on/$emit方法。这种方式可以叫做发布订阅模式class Event { constructor() { // 创建一个事件对象 this.events = Object.create(null); } // 绑定事件 on(name, fn) { // 没有该事件? 初始化处理函数数组为空 if (!this.eve原创 2020-08-27 14:23:52 · 667 阅读 · 1 评论 -
栈 API push pop min实现
class Stack { constructor() { this.dataStack = [] this.miniStack = [] } push(num) { if(this.dataStack.length === 0) { this.dataStack.push(num) this.miniStack.push(num)...原创 2020-08-27 14:24:00 · 100 阅读 · 0 评论