判断数组
之前有讲过数组去重的方法,今天说一下如何判断是否为空数组和数组的一些方法。话不多说直接上代码!
如何判断一个变量是不是数组:
使用 Array.isArray 判断,如果返回 true, 说明是数组;
使用 instanceof Array 判断,如果返回 true, 说明是数组;
使用 Object.prototype.toString.call 判断,如果值是 [object Array], 说明是数组;
通过 constructor 来判断,如果是数组,那么 arr.constructor === Array. (不准确,因为我们可以指定 obj.constructor = Array)
1 | function fn() { |
ajax
webpack入门
1、webpack 介绍
当我们打开webpack 中文文档首页时,最底下的几个大字让一切变得简单,我就觉得它很牛逼,很不简单。官网上的 webpack 概念:webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler),显然 webpack 是一个项目静态模块打包器。不过后面还有一句就是:当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。这个的意思就是 webpack 会自动分析你的项目结构,各个的模块依赖关系,然后打包成相应的 bundle,至于模块就理解为一个 js 文件为一个模块,css 也是一样。
2、创建 webpack 项目
1.新建文件夹,名为 webpackdemo,创建 src 文件夹并且包含 app.js; 2.打开终端进入 webpackdemo 文件夹,输入 npm init,执行完了会出现 package.json 文件; 3.安装 webpack 和 webpack-cli,输入 npm i webpack webpack-cli -D 4.在 package.json 中添加
浏览器记住密码背景色变成黄色处理
在实际项目当中,用户登录网站输入账号密码,当用户选择记住密码的时候,下次自动填充表单的背景变成了黄色,影响了视觉体验。这个是可以修改的。下面给出方案:
1 | // 方法1 |
CSS
1. 盒模型
页面渲染时,dom 元素所采用的 布局模型。可通过box-sizing进行设置。根据计算宽高的区域可分为:
- content-box (W3C 标准盒模型)
- border-box (IE 盒模型)
- padding-box
- margin-box (浏览器未实现)
box-sizing: content-box(W3C盒子模型):元素的宽高大小表现为内容的大小。
box-sizing: border-box(IE盒子模型):元素的宽高表现为内容 + 内边距 + 边框的大小。背景会延伸到边框的外沿。
IE5.x和IE6在怪异模式中使用非标准的盒子模型,这些浏览器的width属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。
2. BFC
块级格式化上下文,是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。
- IE下为 Layout,可通过 zoom:1 触发
浏览器缓存机制
Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节。
但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。
在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。
1. 浏览器缓存基本认识
它分为强缓存和协商缓存:
1.浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接从自己的缓存中读取资源,不会发请求到服务器。比如某个css文件,如果浏览器在加载它所在的网页时,这个css文件的缓存配置命中了强缓存,浏览器就直接从缓存中加载这个css,连请求都不会发送到网页所在服务器;
服务端与网络
数组去重
今天总结一下数组去重的一些方法。记录一下。在真实的项目中碰到的数组去重,一般都是后台去处理,很少让前端处理这种问题。虽然日常项目用到的比较少,但我们还是需要了解一下,以防面试的时候可能回被问到。如果是被提问到,数组去重的方法有哪些?你能答出其中的几种?
一、利用 ES6 Set 去重
1 | Array.from(new Set([1,2,3,3,4,4])) //[1,2,3,4] |
set 是 ES6 新出来的一种一种定义不重复数组的数据类型
Array.from 是将类数组转化为数组
…是扩展运算符,将 set 里面的值转化为字符串
项目性能优化
跨域解决方案
通过jsonp跨域
通常为了减轻web服务器的负载,我们把js、css,img等静态资源分离到另一台独立域名的服务器上,在html页面中再通过相应的标签从不同域名下加载静态资源,而被浏览器允许,基于此原理,我们可以通过动态创建script,再请求一个带参网址实现跨域通信。
原生实现:
1 | var script = document.createElement('script'); |