fe-interview
快乐的小小编
这个作者很懒,什么都没留下…
展开
-
工具函数--防抖和节流
防抖和节流窗口的resize、scroll,输入框内容校验等操作时,如果这些操作处理函数较为复杂或页面频繁重渲染等操作时,如果事件触发的频率无限制,会加重浏览器的负担,导致用户体验非常糟糕。此时我们可以采用debounce(防抖)和throttle(节流)的方式来减少触发的频率,同时又不影响实际效果。【搜索框的请求优化】:将多个请求合并为一个请求防抖debounce(防抖),简单来说就...转载 2018-09-23 12:22:14 · 339 阅读 · 0 评论 -
数据结构与算法---动态规划( 9宫格数字序列对应的字母组合)
const assert = require('assert');/** * 9宫格数字序列对应的字母组合 * @param digits */function letterCombinations(digits) { const letterMap = { 0: ' ', 1: '', 2: 'abc', 3: 'def', 4: 'ghi...原创 2018-09-30 17:00:00 · 3814 阅读 · 0 评论 -
数据结构与算法--动态规划资源
爬楼梯:http://www.sohu.com/a/149075950_68444501背包问题:https://juejin.im/post/5affed3951882567161ad511原创 2018-09-27 18:13:29 · 268 阅读 · 0 评论 -
原生js实现Ajax方法及promise封装
/*1. open(method, url, async) 方法需要三个参数: method:发送请求所使用的方法(GET或POST);与POST相比,GET更简单也更快,并且在大部分情况下都能用;然而,在以下情况中,请使用POST请求:无法使用缓存文件(更新服务器上的文件或数据库)向服务器发送大量数据(POST 没有数据量限制)发送包含未知字符的用户输入时,POST 比 GET 更稳...原创 2018-09-25 00:48:52 · 2697 阅读 · 0 评论 -
JavaScript实现私有属性
源地址JavaScript被很多人认为并不是一种面向对象语言,原因有很多种,比如JavaScript没有类,不能提供传统的类式继承;再比如JavaScript不能实现信息的隐藏,不能实现私有成员。本文并不是为了打破以上误解(实际上笔者自己也有困惑),只是简单介绍几种JavaScript实现私有属性的方式,以及各自的优劣。基于编码规范约定实现方式很多编码规范把以下划线_开头的变量约定为私有成...转载 2018-09-25 00:06:05 · 938 阅读 · 0 评论 -
数据结构与算法--优先队列
/** * 优先队列:元素的添加和删除是基于元素的优先级的 * * 两种实现方式: * (1)设置优先级,然后再正确的位置添加元素; * (2)入列添加元素,按照元素的优先级移除他们 * @constructor */function PriorityQueue() { let items = []; function QueueElement(element, pr...原创 2018-09-24 23:45:14 · 243 阅读 · 0 评论 -
数据结构与算法--二叉搜索树
/** * 二叉搜索树(BST): * 只允许左侧节点存储小的值,右侧节点存储大(大于或等于)的值 * @constructor */function BinarySearchTree() { function Node(key) { this.key = key; this.left = null; this.right = null; } le...原创 2018-09-24 23:38:06 · 392 阅读 · 0 评论 -
JavaScript工具函数--数组相关
/** * 数组去重 * @param arr * @returns {*[]} */function deDuplication(arr) { return [...new Set([...arr])];}/** * 数组平铺 * @param arr * @returns {Array} */function flattenArray(arr) { retu...原创 2018-09-23 15:38:06 · 239 阅读 · 0 评论 -
数据结构与算法--排序(冒泡、选择、归并、快速排序、堆排序)
/** * 冒泡排序 * @param arr */function bubbleSort(arr) { let len = arr.length; for (let i =0; i < arr.len; i++) { for (let j = 0; i < len - i - 1; j++) { if (arr[j] > arr[j+1]) ...原创 2018-09-23 14:20:13 · 476 阅读 · 0 评论 -
对象创建与拷贝--new运算符、Object.create、Object.assign、Object.defineProperty
对象创建方式(1)字面量(2) new 运算符// new 运算符实现function NEW() { const func = arguments[0]; // 构造函数 const params = [].slice.call(arguments, 1); // 获取传入的参数,调用构造函数时使用 // 继承构造函数中的属性 const o = Object.cr...原创 2018-09-23 14:17:19 · 618 阅读 · 0 评论 -
JavaScript函数实现--call、apply、bind
1、call函数实现Function.prototype.newCall = function(context, ...args) { if (typeof context === 'object') { context = context || window; } else { context = Object.create(null); } const fn...原创 2018-09-23 12:50:07 · 342 阅读 · 0 评论 -
数据结构与算法--排列(数组全排列)
/** * 求数组的全排列 * @param nums * @returns {Array} */function permute(nums) { const resPms = []; const used = Array(nums.length).fill(false); // 需要对已经参与排列的元素进行记录;但要注意在递归回调结束时要记得回溯 /** * 向...原创 2018-09-30 17:42:36 · 776 阅读 · 0 评论