- 博客(13)
- 收藏
- 关注
原创 浏览器的缓存策略
HTTP缓存有多种规则,根据是否需要向服务器重新发起请求来分类,将其分为强制缓存,对比缓存。1.强制缓存:判断HTTP首部字段:Expires 和 cache-control。Expires是一个绝对时间,即服务器时间。浏览器检查当前时间,如果还没到失效时间就直接使用缓存文件。但是该方法存在一个问题:服务器时间与客户端时间可能不一致cache-control中的max-age保存了一个相对时间。例如Cache-Control: max-age = 484200,表示浏览器收到文件后,缓存在484200
2021-03-23 20:56:54 567
原创 作用域与作用域链
作用域与作用域链作用域1.一、在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理JS引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称进行变量查找。这里的标识符,指的是变量名或者函数名2.二、JavaScript中有全局作用域与函数作用域(因为eval我们平时开发中几乎不会用到它,这里不讨论)。作用域链作用域链,是由当前环境与上层环境的一系列变量对象组成,它保证了当前执行环境对符合访问权限的变量和函数的有序访问。let a = 20;function test
2021-03-10 21:22:03 136
原创 什么是闭包
什么是闭包闭包是指有权访问另一个函数作用域内变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,创建的函数可以访问到当前函数的局部变量。闭包有两个常用的用途。1.闭包的第一个用途是使我们在函数外部能够访问到函数内部的变量。通过使用闭包,我们可以通过在外部调用闭包函数,从而在外部访问到函数内部的变量,可以使用这种方法来创建私有变量。2.函数的另一个用途是使已经运行结束的函数上下文中的变量对象继续留在内存中,因为闭包函数保留了这个变量对象的引用,所以这个变量对象不会被回收。functio
2021-03-10 21:01:10 157
原创 原型和原型链
什么是原型?在JavaScript中,每当定义一个函数数据类型(普通函数、类)时候,都会天生自带一个prototype属性,这个属性指向函数的原型对象,并且这个属性是一个对象数据类型的值。原型对象就相当于一个公共的区域,所有同一个类的实例都可以访问到这个原型对象,我们可以将对象中共有的内容,统一设置到原型对象中。即可继承父类构造函数的属性,又可以继承父类原型的公共方法function Person(name, age) { this.name = name; this.age =
2020-05-23 16:54:09 249
原创 执行上下文详解
执行上下文可以理解为当前代码的执行环境,它会形成一个作用域function f1() { var n = 999; function f2() { alert(n); } return f2;}var result = f1();result(); // 9991.单线程2.同步执行,只有栈顶的上下文处于执行中,其他上下文需要等待3.全局上下文只有唯一的一个,它在浏览器关闭时出栈4.函数的执行上下文的个数没有限制5.每次某个函数被调用,就会创建一个新的执行上下文
2020-05-23 16:05:28 458
原创 一般的面试手写代码
1.debouncefunctioin debounce(fn, delay) { let timer return function () { clearTimeout(timer) let _this = this let arg = arguments timer = setTimeout(function() { fn.apply(_th...
2020-05-05 08:59:20 373
原创 git 基本操作
1.git add2.git commit -m3.git push4.git pull5.git config user.name6.git config user.email7.git branch8.git checkout9.git fetch10.git diff11.git log12git status13 git stash git stash pop
2020-05-02 14:53:39 194
原创 正则表达式总结
2. 字符类一般情况下正则表达式一个字符对应字符串一个字符我们可以使用[]来构建一个简单的类所谓类是指符合某些特性的对象,一个泛指,而不是特指某个字符表达式[abc]把字符a或b或c归为一类,表达式可以匹配这类字符'a1b1c1d1'.replace(/[abc]/g, 'x') \\"x1x1x1d1"'a1b1c1d1'.replace(/abc/g, 'x') \\"...
2019-08-03 22:13:54 286
原创 手写ajax
实现过程1创建XMLHttpRequest对象2指定响应函数responseText 获得字符串形式的响应数据。responseXML 获得 XML 形式的响应数据。3打开连接(指定请求)4发送请求5创建响应函数onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。readyState 存有 XMLHttpReque...
2019-08-01 15:12:51 283
原创 js Array数组常用api
数组的遍历** every() 方法**every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。every() 方法使用指定函数检测数组中的所有元素:如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。如果所有元素都满足条件,则返回 true。注意: every() 不会对空数组进行检测。注意: every() 不会改变原...
2019-07-30 16:27:21 794
原创 js 变量、作用域
一、基本类型与引用类型1.1 基本类型:保存在栈内存中的简单数据段,值保存在内存中的一个位置1.2 引用类型:保存在堆内存中的对象,变量保存的仅仅是一个指针,这个指针指向内存中的另一个位置,该位置保存对象1.2.1 5种基本数据类型:Undefined、Null、Boolean、Number、String在内存中分别占有固定大小的空间,保存在栈内存中1.2.2 按值访问:对...
2019-07-20 16:36:11 164
原创 javascript面向对象函数的总结
/* 创建对象 *///工厂模式function createPerson(name, age, job) {var o = new Object();o.name = name;o.age = age;o.job = job;o.sayName = function() {alert(this.name);};return o;}var person1 = createP...
2019-07-11 09:30:22 186
转载 VeeValidate的使用总结
一、安装和引入npm install vee-validate --saveimport Vue from 'vue';import VeeValidate from 'vee-validate';Vue.use(VeeValidate);二、配置组件const config = { aria: true, classNames: {}, classes: false,...
2019-07-09 14:39:56 1526
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人