You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Function.prototype.myBind=function(context){letargs=[].slice.call(arguments,1);constcontext=context;constfn=this;letfbound=function(){constnewArgs=args.concat([].slice.call(arguments));returnfn.apply(thisinstanceoffn ? this : context,newArgs)};functionConstructor(){};Constructor.prototype=fn.prototype;fbound.prototype=newConstructor();returnfbound;}
3. new
functioncreate(){// 创建一个新对象letobj=newObject();// 获得构造函数letCon=[].shift.call(arguments);// 链接到原型obj.__proto__=Con.prototype;// 绑定this,执行构造函数letresult=Con.apply(obj,arguments);// 确保new出来的是个对象returntypeofresult==='object' ? result : obj;}
Array.prototype.fakeReduce=functionfakeReduce(fn,base){if(typeoffn!=="function"){thrownewTypeError("arguments[0] is not a function");}letinitialArr=this;letarr=initialArr.concat();if(base)arr.unshift(base);letindex,newValue;while(arr.length>1){index=initialArr.length-arr.length+1;newValue=fn.call(null,arr[0],arr[1],index,initialArr);arr.splice(0,2,newValue);// 直接用 splice 实现替换}returnnewValue;};
[TOC]
JS 部分
1. 防抖节流
节流:wait时间内,函数只执行一次,分为定时器版和时间戳版
2. call、apply、bind实现
3. new
4. instanceof
5. 二叉树遍历
二叉树遍历
使用JavaScript完成二叉树的一些基本操作
6. Promise各种API的实现
BAT前端经典面试问题:史上最最最详细的手写Promise教程
7. 实现虚拟DOM转真实DOM
理解虚拟DOM,实现DOM
8. 各种排序算法
js实现几种常见排序算法
9. repeat函数,考察闭包
闭包面试题两道
题2的另一种解法:
10. JavaScript中的浅拷贝和深拷贝
解决循环引用的问题,使用一个set记录遍历过的值,每次拷贝前查出Set中存在这个值,就直接返回。
JavaScript中的浅拷贝和深拷贝
面试官:请你实现一个深克隆
11. 数组扁平化、去重
12. 求二叉树的最大最小高度
二叉树的最大深度(JavaScript)
二叉树的最小深度
13. 柯里化
从一道面试题认识函数柯里化
前端进击的巨人(五):学会函数柯里化(curry)
14. ES6 map reduce 方法实现
JavaScript 实现 reduce() 方法函数
15. 字符串压缩
字符串压缩-正则
16.EventEmitter实现
循序渐进教你实现一个完整的node的EventEmitter模块
EventEmitter 源码分析与简易实现
CSS 部分
三角形、梯形、扇形
用 css 画三角形、梯形、扇形、箭头和椭圆几种基本形状
两栏布局
三栏布局
圣杯布局
双飞翼布局
其实就是左右两侧定宽,中间自适应的三列布局,跟圣杯差不多
水平垂直居中
The text was updated successfully, but these errors were encountered: