
面试
heiheiheiheiheiheii
这个作者很懒,什么都没留下…
展开
-
实现数组的 forEach 方法
数组的 forEach 方法用来遍历数组,没有返回值。let arr = [1, 2, 3, 4, 5];arr.forEach((item, index, arr) => { console.log(index + ':' + item, arr);})0:1 (5)[1, 2, 3, 4, 5]1:2 (5)[1, 2, 3, 4, 5]2:3 (5)[1, 2, 3, 4, 5]3:4 (5)[1, 2, 3, 4, 5]4:5 (5)[1, 2, 3...原创 2022-02-14 21:18:00 · 1431 阅读 · 0 评论 -
实现 loadsh 的 get 方法
在使用对象的属性时,假如有 obj 对象,我们要找到 obj.a.b.c.d 属性时,这个时候,当有一项书写错误,就会报错。我们需要写一个容错率高的方法来解决。我们可以使用 obj && obj.a && obj.a.b && obj.a.b.c && obj.a.b.c.d 特别的麻烦。或者我们可以使用可选链操作符 obj?.a?.b?.c?.d 这种的当找不到会返回 undefined ,而不会报错。或者给一个默认值 obj...原创 2022-02-11 23:10:47 · 634 阅读 · 0 评论 -
写一个 mySetInterVal(fn, a, b) 能够每隔 a秒、a + b 秒、a+2b、... a+nb 打印
方法一function mySetInterVal(fn, time1, time2) { let timer = {}; function start() { function setTimer(fn, time1, time2) { timer.id = setTimeout(() => { fn(); setTimer(fn, time1 + time2, time2)原创 2022-02-11 23:03:47 · 489 阅读 · 0 评论 -
封装一个用来判断数据类型的函数
在 IE6 以下,Object.prototype.toString 会对 null 和 undefined 返回 [object Object] 。并且 null == undefined 。const type = (function () { var class2type = {}; "Boolean Number String Function Array Date RegExp Object Error".split(' ').forEach((item, index) =原创 2022-02-04 11:27:48 · 680 阅读 · 0 评论 -
判断对象是否为空对象
方法一对象有属性才能够走入 for...in ,并且判断是否是自身拥有的属性。function isEmptyObject(obj) { for (var i in obj) { if (obj.hasOwnProperty(i)) { return false; } } return true;}方法二利用 JSON.stringify 转为一个字符串进行判断function isEmptyObjec原创 2022-02-04 11:24:42 · 478 阅读 · 0 评论 -
实现一个 webpack
在浏览器中是不能够直接使用模块化的,尽管现在已经支持了Es Module ,但是还需要进一步的转换。webpack 可以将我们的模块进行打包成 bundle 文件 ,为浏览器能够识别的语法。add.js 文件exports.default = (a, b) => a + b;index.js 文件const add = require('add.js').default;console.log(add(2, 4));上面的 exports 和 require 浏览器是不能够识别的。但.原创 2022-01-26 15:27:21 · 1070 阅读 · 0 评论 -
手写 promise
;(function (global) { "use strict"; // 定义状态 const PENDING = 'pending'; const RESOLVED = 'resolved'; const REJECTED = 'rejected'; /** * Promise 构造器函数 * @param {function} executor */ function Promise(executor) ...原创 2022-01-27 16:46:10 · 662 阅读 · 0 评论 -
实现简易版的 Vue
class Vue { constructor(options) { this.$data = options.data; // 进行数据劫持 this.Observe(options.data); // 编译模版 this.Compile(options.el); } Observe(data) { if (!data || typeof data !== 'obj.原创 2022-02-03 22:56:42 · 619 阅读 · 0 评论 -
发布订阅模式 vs 观察者模式
观察者模式,和发布订阅模式,有什么区别?你可能听过这二者是一样的,没有差别。但是二者其实是不一样的,属于两种不同模式。观察者模式所谓观察者模式,其实就是为了实现松耦合。举例:以一个小宝宝为例,每当小宝宝的心情发生变化,changed()方法被调用,然后我们在 changed() 方法里面,更新宝宝的心情。假如我们要在小宝宝心情发生变化之后,增加新的操作,更新宝宝的其他特征,的这时候我们就需要去修改changed()方法的代码,这就是紧耦合的坏处。观察者模式里面, changed..原创 2022-02-03 20:17:30 · 515 阅读 · 0 评论 -
JavaScript 手写 call,apply
Function.prototype.call = function (context) { // null, undefined, empty : window // number, String, Boolean : 包装类型 Object(1) Object(‘1’) Object(true) // object : object context = context ? Object(context) : window; // 在函数变为 context 对.原创 2022-01-09 21:37:39 · 225 阅读 · 0 评论