![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
海阔天空.
前端工程师
展开
-
js创建对象与继承总结
最近再次看起了 《JavaScript高级程序设计》,在此做下笔记,总结一下 创建对象与继承的主要方式。一、创建对象虽然Object构造函数或对象字面量都可以用来创建对象,但这些方式都有个明显的缺点:使用同个接口创建很多对象,会产生大量的重复代码。为解决这个问题,人们开始使用工厂模式的一种变体。 ——《JavaScript高级程序设计》1.工厂模式这...原创 2020-04-17 17:29:48 · 288 阅读 · 0 评论 -
JavaScript函数调用及函数上下文(this)
JavaScript中函数调用有如下4种方式:1.作为一个函数直接被调用, func()。 此时,在非严格模式中函数上下文this指向全局window;在严格模式中指向undefined2.作为一个对象的方法调用,obj.func()。 此时,上下文this指向这个调用它的对象obj3.作为构造函数调用new Func(),实例化一个新的对象。 此时,构造函数内部的this...原创 2019-11-08 18:38:35 · 612 阅读 · 0 评论 -
遍历DOM的方式
以如下html代码为例:<div id="content"> <h3>我是标题</h3> <p> <span>我是span内容1</span> <span>我是span内容2</span> </p> </div>1.比...原创 2019-11-10 12:02:08 · 352 阅读 · 0 评论 -
前端网络和安全相关总结
本文旨在总结一下前端相关的网络和安全相关的一些知识点,每个点都相对简陋,只用来了解个大概。一、浏览器页面渲染的流程1)解析文档构建DOM树HTML/XHTML/SVG:解析这三种文件后,会生成DOM树(DOM Tree)CSS:解析样式表,生成CSS规则树(CSS Rule Tree)JavaScript:解析脚本,通过DOM API和CSSOM API操作DOM Tree和CSS...原创 2019-12-22 17:18:15 · 1175 阅读 · 0 评论 -
简单实现数组filter、every、some、map、forEach、reduce方法
前言:通过运用for循环和利用把函数作为值进行传递实现和数组自带方法同样的功能1.实现filter方法Array.prototype.myFilter = function(cb, context) { let newArr = []; let self = this; //this指向调用的数组 for (let i=0; i<self.lengt...原创 2019-06-10 20:14:28 · 697 阅读 · 0 评论 -
js数组去重的几种方法
例:letarr = [0,0,1,1,1,2,3,4,5];1.数组的filter方法let result = arr.filter((item, index, self) => { return index === self.indexOf(item)})2.es6 Set数据结构let result = [...new Set(arr)]3.es6 Ma...原创 2019-04-18 19:50:18 · 226 阅读 · 0 评论 -
数组扁平化的方式
1.利用concat、es6拓展运算符、some、Array.isArray、递归、reduce//法一function flatArr(arr) {//concat方法每次会拉平一层 let newArr = [].concat(...arr); return newArr.some(Array.isArray) ? flatArr(newArr) : newArr;...原创 2019-01-10 20:55:53 · 1485 阅读 · 0 评论 -
前端面试常见手写函数
1.记忆函数 记忆函数顾名思义就是可以记住计算结果的函数,通过闭包来缓存结果,通过判断缓存中是否有值来决定是计算还是使用缓存中的值。可以避免重复计算,对于需要大量时间进行计算的函数能提高性能。function memorize(fn) { var cache = {}; return function(...args) { let key = args.to...原创 2020-10-20 15:57:47 · 451 阅读 · 0 评论 -
js对象浅拷贝与深拷贝
一、简介 浅拷贝是拷贝一层,如果数据是基本数据类型,会拷贝其本身,如果除了基本数据类型之外还有一层对象,那么只能拷贝其引用,对象的改变会反应到拷贝对象上。 深拷贝是拷贝多层,每一层的数据都会拷贝出来,对象的改变不会影响拷贝对象。二、实现 1、实现浅拷贝 1)数组自带的浅拷贝方法:slice()、concat、Array.from()、... 操作符let...原创 2018-12-19 10:58:29 · 1192 阅读 · 0 评论 -
遍历对象并获取每一项的层级
let data = [ { id: 1 }, { id: 2, child: [ { id: 3 }, { id: 4, child: [ { id: 5 } ] }, { id: 6, child: [ ...原创 2019-11-19 19:03:07 · 1295 阅读 · 0 评论