前端
y_hh_
这个作者很懒,什么都没留下…
展开
-
浏览器的缓存策略:强缓存&协商缓存
前述在获取到服务器上的资源后, 浏览器和缓存服务器会根据其缓存的策略对资源进行缓存,在下一次访问该资源时,可以直接从本地或者缓存服务器上获取。缓存可以分为强缓存和协商缓存两种。强缓存在使用强缓存时,浏览器会根据首部参数如max-age,来判断该缓存是否已过期,如果没有过期,则直接使用该缓存,否则,请求服务器上的资源。主要的首部字段有:Cache-Control 和 Expires协商缓存协商缓存则是,在请求服务器时,会使用 Etag和If-None-Match、Last-Modified和If原创 2020-08-01 22:30:36 · 241 阅读 · 0 评论 -
JS中的节流和防抖
前言在JS中,节流和防抖是两个相似的概念,都是为了限制JS频繁地运行一段代码。但两者还是有一定区别的。节流节流的目的是为了防止代码无间断执行,其思想是,在规定时间内改段代码只能执行一次,通过设置标记,根据标记值来表示这段时间内是否有代码执行,如果有,则不重复执行,等待下次触发。如果没有,则将标记置为True,设置定时器,当代码执行完毕后,再将标记位置为False. 代码如下: // 节流 : 防止某些代码没有间断的执行 function throttle(method, context){原创 2020-08-01 22:06:52 · 436 阅读 · 0 评论 -
JS中this对象
简述在JS中也有this对象,但与其他的面向对象语言相比,JS中的this 是动态的,它会根据你调用的位置,以及一些绑定规则绑定this对象。举个例子:function foo(){ console.log(this.a);}let obj = { test:foo};a = 20;obj.a = 10;obj.test(); //10foo(); // 20在obj.test()中 this是绑定obj这个调用对象的,因此会输出10. 但在foo()绑定的是全局对象,因此输原创 2020-07-30 22:44:16 · 269 阅读 · 0 评论 -
ES6的Symbol
简述为了解决ES5对象属性名会重复的问题,ES6提出了第七种数据类型:Symbol,用来表示独一无二的值.var s = Symbol()console.log(typeof s); // symbolvar a = Symbol();var b = Symbol();console.log(a == b) // falseSymbol 函数前不能加new ,因为生成的Symbol是一个原始类型的值,不是对象Symbol 函数可以接受一个字符串作为参数,表示对Symbol实例的描述va原创 2020-07-24 20:49:08 · 187 阅读 · 0 评论 -
JS之Ajax初体验
AjaxAjax 是Asynchronous Javascript + XML的简写,这一技术可以向服务器请求额外数据而无需卸载页面。而Ajax的核心就是XMLHttpRequest对象XMLHttpRequest 工作原理传统的web前端与后端的交互中,浏览器直接访问Tomcat的Servlet来获取数据。Servlet通过转发把数据发送给浏览器。当我们使用AJAX之后,浏览器是先把请求发送到XMLHttpRequest异步对象之中,异步对象对请求进行封装,然后再与发送给服务器。服务器并不是以转发原创 2020-07-18 22:11:14 · 133 阅读 · 0 评论 -
JS中的创建对象
工厂模式function createPerson(name, age) { let obj = new Object(); obj.name = name; obj.age = age; obj.sayName = function () { console.log(obj.name); } return obj;}var person = createPerson("zhangsan", 1);无法实现实例之间共享一些方法和属性原创 2020-07-18 15:07:42 · 113 阅读 · 0 评论 -
JS中类型判断
基本类型undefinednullBooleanNumberStringObjectSymbol(ES6)常见的引用类型functionArraysetmap…一般来说有三种检测类型的方法:typeof 、instanceof 和 Object.proprety.toString.call()typeof//typeofconsole.log("typeof:")console.log(typeof(undefined)); //undefinedconsole原创 2020-07-17 21:50:39 · 137 阅读 · 0 评论 -
JS中的事件流
简述事件流描述的是从页面中接受事件的顺序,在JS中分为两种,一个是事件冒泡,还有一个是事件捕获当btn中的事件被触发了,其事件流的顺序就如上图所示, 先从最外面的body开始到btn的捕获阶段,再是从里到外的事件冒泡阶段。DOM 事件流在"DOM2级事件"规定的事件流包括三个阶段“事件捕获阶段、出于目标阶段和事件冒泡阶段”。一般来说,出于目标阶段会被看成冒泡阶段的一部分事件处理程序1.HTML事件处理程序直接在html中添加事件处理程序,如<input type="button" o原创 2020-07-16 21:59:50 · 1949 阅读 · 0 评论 -
DOM扩展学习记录
主要记录以下书中的选择API和部分HTMl5的扩展。选择符API这里的选择符api,主要指得是querySelector() 和 querySelectorAll() 这两个方法querySelector()querySelector 方法接受一个CSS选择符,返回与该模式匹配的第一个元素,如果没有找到,则返回null.输入元素名var body = document.querySelector('body');输入ID, “#id”var myDiv = document.qu原创 2020-07-15 20:03:32 · 100 阅读 · 0 评论 -
JS中的布尔操作符
布尔操作符在JS中又三中布尔操作符:逻辑非(!)、逻辑与(&&)和逻辑或(||).但与其他语言中的布尔操作符不同的是,JS中的布尔操作符可以返回非布尔类型的结果。逻辑非对布尔值取反,但对于非布尔值的操作数,JS会依据下面的规则返回值如果操作数是一个对象,返回false如果操作数是一个空字符串,返回true如果操作数是一个非空字符串 ,false如果操作数是一个数值0,true如果操作数是一个非0数值(包括Infinity),false如果操作数是null, true如果原创 2020-07-09 18:53:56 · 264 阅读 · 0 评论 -
JS中对象的属性
属性类型在ECMA-262中,对于对象的定义如下:无序属性的集合,其属性可以包含基本值、对象或者函数。在JS中对象的中的值的形式是键值对的形式。特别注意的是,对象的键是以字符串形式映射的,下面这个例子中,obj[1]和obj[‘1’]指向的是一个属性。var obj = new Object()obj[1] = 'num';obj['1'] = 'string'; // obj = {1:'string}在ES5的描述中,ECMAScript中有两种属性:数据属性和访问器属性数据属性有以原创 2020-07-08 20:58:36 · 1137 阅读 · 0 评论 -
JS中对象的访问方式
对象的访问一般来说,访问对象是通过点表示法,但再JavaScript中可以通过方括号的形式来表示对象属性.var Person = { 'name':'张三', 'age':12}console.log(Person.name); //张三console.log(Person['name']); //张三从功能上看上面两种方式没什么区别,但方括号的主要优点是可以通过变量来访问属性。例如let property = 'name';console.log(Person[proper原创 2020-07-08 19:27:18 · 719 阅读 · 4 评论 -
关于this对象
this对象是是在运行时基于函数的执行环境绑定的var object = { name: "My Object", getName: function(){ return this.name; }}let b = object.getName;console.log(object.getName()); // "My Object"console.log(b()); // undefined 在全局函数中, this 等于window但函数作原创 2020-07-01 21:26:26 · 173 阅读 · 0 评论 -
JS正则
JS 中的正则用法一般是有两种,一是新建RegExp对象,进行正则匹配;二是直接在字符串对象的函数中使用,如:string.match(), string.split().RegExp直接用字面量生成RegExp对象:/^\w+$/i采用构造函数: let reg = new RegExp(’^\w+KaTeX parse error: Undefined control sequence: \w at position 41: …= new RegEXp(/^\̲w̲+/,‘i’)常用原创 2020-06-30 21:38:21 · 188 阅读 · 0 评论 -
特指度和层叠
特指度特指度是指不同样式的‘权重’,例如:指向ID的样式声明对应的特指度为“0,1,0,0”指向类名和属性值的特指度为“0,0,1,0”元素和伪元素(:link,:after等)的特指度为“0,0,0,1”行内样式(在标签内部声明的样式)的特指度为“1,0,0,1”通配符的样式是0特指度通过继承获得样式的是无特指度的特指度是可以叠加的,当多个规则对应的同一个样式的话,就会根据特指度的大小进行选择(大的优先)层叠当多个规则的特指度相同时,就需要根据层叠的准则:找到匹配特定元素的所有原创 2020-06-30 21:00:05 · 165 阅读 · 0 评论 -
Set、Map、WeakSet和WeakMap
SetSet 是ES6新增的数据结构,可以存放任意类型的值,但成员是无序且唯一.Set 类似于数组,只有值没有健,或者说键名等于键值。# 新建一个Setlet set = new Set();# 增加一个元素set.add(1); // 1# 可以增加一个同值但不同类型的元素set.add('1'); // 1 '1'# 检测是否包含一个元素set.has(1); //true# 删除一个元素set.delete(1); // 返回true, set中还有'1'# 遍原创 2020-06-30 20:27:53 · 165 阅读 · 0 评论 -
for-in和for-of的区别
简介for…in ,是在ES5中提出的,用于遍历对象中所有的键值;for…of则是ES6中提出,是可以遍历所有数据结构的统一方法。for…infor-in 语句是一种精准迭代的语句,可以用于枚举对象中的属性。主要的缺点:在对数组进行遍历时,数组的键名是数字,但在for-in语句中是以字符串作为键值的,如‘0’、‘1’、‘2’.for-in会遍历对象中的所有键值,如在数组中手动添加的其他键值。对于for-in 中遍历的顺序是不一定的。总之对于for-in 语句来说,最好是用来遍历对象,而不原创 2020-06-26 21:38:45 · 516 阅读 · 0 评论