![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前端面试
乌鲁托拉曼
撒大声地的
展开
-
【数据结构与算法】JS实现二叉树的非递归遍历
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head></html><script>原创 2021-03-15 16:23:42 · 354 阅读 · 0 评论 -
【JavaScript】递归实现一个深拷贝
function deepCopy(obj){ // 递归退出条件 if(obj === null || typeof obj !== 'object'){ return obj; } const cloneObj = Array.isArray(obj) ? [] : {}; for(key in obj){ //判断是不是自身属性 if(obj.hasOwnProperty(key)){ if(typeof原创 2021-02-17 21:52:51 · 271 阅读 · 0 评论 -
【JavaScript】实现bind,apply和call
Function.prototype.myBind = function(ctx, ...agrs1){ const fn = this; function noopFn(){} function innerFn(...args2){ // bind返回的函数可以作为构造函数使用 // 当做构造函数时,绑定的this(即上文ctx)失效; 此时this指向new出来的实例 ctx = th原创 2021-01-11 14:51:33 · 152 阅读 · 1 评论 -
【JavaScript】手写一个promise
const PENDING = 'PENDING';const RESOLVE = 'RESOLVE';const REJECTED = 'REJECTED';function Promise(executor){ const self = this; self.status = PENDING; self.data = undefined; self.callbacks = [] // { onResolved: () => {}, onRejected:原创 2021-01-06 22:00:07 · 151 阅读 · 0 评论 -
【JavaScript】js闭包的10种表现形式
1.返回值var fn = function() { var name = function() { var name = 'lzx'; return function() { return name; } }}2.函数赋值, 将内部函数赋值给外部变量var fn2;var fn = functio...原创 2020-05-05 18:58:54 · 654 阅读 · 2 评论 -
【JavaScript】使用js实现3版函数节流
html jsfunction throttle(func, wait) { let prevTime = 0; return () => { args = arguments; const _this = this; let nowTime = new Date().valueOf(); if(nowTi...原创 2020-05-04 18:34:15 · 159 阅读 · 0 评论 -
【性能优化】浏览器的重绘与重排
**浏览器运行机制**1、构建DOM树(parse):渲染引擎解析HTML文档,首先将标签转换成DOM树中的DOM node(包括js生成的标签)生成内容树(Content Tree/DOM Tree);2、构建渲染树(construct):解析对应的CSS样式文件信息(包括js生成的样式和外部css文件),而这些文件信息以及HTML中可见的指令(如),构建渲染树(Rendering Tr...转载 2020-04-12 18:13:38 · 504 阅读 · 0 评论 -
【NPM】npm i webpack -g或npm i create-react-app -g之后提示command not found解决方案
鄙人之前在安装webpack,yarn,react-react-app,vue-init时,明明是按着官方文档进行安装的,而且提示安装成功了npm i webpack webpack-cli -gnpm i create-react-app -gnpm i yarn -g不管是 -g 还是–save都不管用,但是老是出现 xxx command not found如下图所示什么鬼?提...原创 2019-06-10 00:58:54 · 1927 阅读 · 0 评论 -
【设计模式】实现一个简单的js发布-订阅者模式
一 概念发布—订阅模式又叫观察者模式,它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当一个对象发生改变时,所有依赖于它的对象都将得到通知。二 现实中的发布订阅者模式1.比如小红最近在淘宝网上看上一双鞋子,但是呢 联系到卖家后,才发现这双鞋卖光了,但是小红对这双鞋又非常喜欢,所以呢联系卖家,问卖家什么时候有货,卖家告诉她,要等一个星期后才有货,卖家告诉小红,要是你喜...原创 2019-03-10 20:41:35 · 4179 阅读 · 0 评论 -
【前端面试】去哪儿2019校招(西安站)读代码题
var n = 1;var obj = { fn : function(){ var n = 99; console.log( n + this.n ); }}obj.fn()obj.fn.call(obj);obj.fn.call(this);obj.fn.call(window);obj.fn.call(null);问这段代码的...原创 2018-11-28 17:31:51 · 277 阅读 · 1 评论 -
【github】github创建自己的分支并上传代码到master
1. 创建一个空的文件夹并进入使用终端进入到这个文件夹2.git clone 远程仓库链接3.创建分支: git branch 分支名字4.切换到这个分支: git checkout 分支名字5.把想要上传的代码文件放到这个文件里6. 把这个文件提交到暂存区 git add .7. git status (查看文件状态,非必须,任何时候都可以通过这个命令查看)8...原创 2018-11-28 16:56:39 · 5820 阅读 · 0 评论 -
【前端面试】对JavaScript中this的理解总结
setTimeout、setInterval中的this,严格模式和非严格模式下的this,箭头函数中的this,函数独立调用中的this1.setTimeout、setInterval中的thisvar obj ={ fn:function(){ console.log(this); }}function fn2(){ console.log(t...原创 2018-11-29 20:24:35 · 1389 阅读 · 0 评论 -
js伪数组转数组、js判断是不是数组
伪数组:具有length属性; 按索引方式存储数据;不具有数组的push()、pop()等方法; 伪数组无法直接调用数组方法或期望length属性有什么特殊的行为,不具有数组的push()、pop()等方法,但仍可以对真正数组遍历方法来遍历它们。常见的伪数组:function内的arguments对象,还有像调用getElementsByTagName, getElementsByC...原创 2018-08-22 15:31:14 · 1104 阅读 · 0 评论 -
js的加载顺序
1.js 放在 <head>标签中会立即执行,阻塞后续资源的下载与执行。因为js有可能会操作DOM,如果不阻塞后续的资源下载,DOM的操作顺序不可控。如果外部脚本加载时间很长,就会造成网页长时间失去响应,浏览器就会呈现“假死”状态。这被称为“阻塞效应”。html 需要等<head>中所有的js和css加载完后才开始绘制。因此要把 js 文件放在 <body&g...原创 2018-08-20 20:31:16 · 4433 阅读 · 0 评论 -
【转】HTTP 和 HTTPS 的区别和各自的优缺点
一,HTTP 的缺点 HTTP 主要有这些不足,例举如下: 1)通信使用明文(不加密),内容可能会被窃听 2)不验证通信方的身份,因此有可能遭遇伪装 3)无法证明报文的完整性,所以有可能已遭篡改 这些问题不仅在 HTTP 上出现,其他未加密的协议中也会存在这类问题。除此之外,HTTP 本身还有很多缺点。而且,还有像某些特定的 Web服务器和特定Web浏览器在实际应用中存在的不足(...转载 2018-08-21 18:08:42 · 498 阅读 · 0 评论 -
JavaScript实现二叉搜索树、前序遍历、中序遍历、后续遍历
<script type="text/javascript"> function BinaryTree(){ //建立二叉树 var Node=function(key){ this.key=key; this.left=null; this.right=null; ...原创 2018-09-04 17:32:28 · 405 阅读 · 0 评论 -
二叉树输入前序遍历,中序遍历重建二叉树并返回
function reConstructBinaryTree(pre, vin) { if(pre.length===0||!pre){ return; } var root = { val: pre[0] }; ...转载 2018-10-07 17:28:35 · 196 阅读 · 0 评论 -
浅谈CSS3中的box-sizing(content-box与border-box)
CSS3中的box-sizing 属性允许以特定的方式来指定盒模型,有两种方式: content-box、border-box。默认值是content-box。 语法格式:box-sizing:content-box | border-box 区别: 1.content-box:padding和border不被包含在定义的width和height之内。 对象的实际宽度=设置的width+原创 2017-12-02 19:46:19 · 22678 阅读 · 0 评论 -
JavaScript实现超大整数相加
function add(a, b) { if (a.length &lt; b.length) { a = '0' + a; } if (b.length &lt; a.length) { n = '0' + b; } // 标志位 满十进一 va...原创 2018-09-26 20:41:59 · 1680 阅读 · 0 评论 -
用promise封装一个简单的ajax啊
function getJSON(url) { return new Promise(function(resolve, reject) { var XHR = new XMLHttpRequest(); XHR.open('GET', url, true); ...原创 2018-09-27 00:20:37 · 916 阅读 · 0 评论 -
【JavaScript】学习笔记之es6中super( )
为什么一定要在constructor中调用super如果一个子类通过extends关键字继承了父类,那么在子类的constructor构造函数中,必须优先调用一下super(),这是一种约定俗成的做法。super是一个函数,指向父类的构造函数,也可以理解为,子类中的super其实就是父类中 constructor 构造函数的一个引用...原创 2018-11-07 20:56:41 · 332 阅读 · 0 评论 -
【react】react实现类似vue的双向数据绑定
import React from 'react'import ReactDOM from 'react-dom'class Comment extends React.Component { constructor() { super() this.state = { msg:'hhhhello world~~~~' ...原创 2018-11-08 19:59:45 · 650 阅读 · 0 评论 -
前端面试题(四):cookie, session 和 localstorage 的区别
1.cookie 和 session 的联系session(会话)是跟踪web程序中常用的技术,用来跟踪用户的整个回话过程。它可以弥补http协议无状态的不足。常用的会话跟踪技术是 cookie 和 session。 cookie通过在客户端的记录信息,确定用户身份,session通过在服务器端记录信息确认用户身份。 只要cookie能做到的,session也能做到。 比如,如果没有 co...原创 2018-08-09 18:24:47 · 13032 阅读 · 6 评论