自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 从输入url到浏览器渲染出页面发生了什么?

1. 输入网址2. 浏览器查找域名对应的IP地址浏览器先检查自身缓存中有没有被解析过的这个域名对应的ip地址,若有,解析结束;若没有浏览器查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。Hosts:将一些常见的网址域名与其对应的IP地址建立一个关联的“数据库”域名劫持:修改hosts文件中的内容,将特定域名解析到指定的ip地址上若在hosts文件中没能找到对应的IP地址,浏览器请求DNS服务器解析ip地址

2020-07-24 17:58:35 185

原创 手写promise

class Promise { constructor(fn) { const that = this; this.state = 'pending'; // value 变量用于保存 resolve 或者 reject 中传入的值 this.value = undefined; this.reason = undefined; // 用于保存 then 中的回调,因为当执行完 Promise 时状态可

2020-07-20 13:55:27 106

原创 前端路由的原理?两种实现方式有什么区别?

1. 前端路由的原理ans: 前端路由的本质实际上是监听url的变化,匹配相应的路由规则,实现页面的更新,并且无须刷新页面。2. 实现的两种方式ans:(1)hash模式www.test.com/#/ 就是 Hash URL,当 # 后面的哈希值发生变化时,可以通过 hashchange 事件来监听到 URL 的变化,从而进行跳转页面,并且无论哈希值如何变化,服务端接收到的 URL 请求永远是 www.test.com,即hash 虽然出现在 URL 中,但不会被包括在 HTTP 请求中,对后端完全

2020-07-20 13:19:34 644

原创 手写mvvm双向绑定

const obj = {};const input = document.getElementById('input');const span = document.getElementById('span');// 数据劫持Object.defineProperty(obj, 'text', { configurable: true, enumerable: true, get() { console.log("获取数据"); }, set

2020-07-20 11:47:24 70

原创 什么是闭包?

1.定义闭包就是有权访问另一个函数变量的函数。被访问的局部变量所在的函数即为闭包。创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域function fn() { var num = 10; return function() { console.log(num); }}var f = fn();f();2. 好处与缺点闭包的主要作用,一个是可以读取函数内部的变量,延伸变量的作用范围;

2020-07-20 07:00:51 109

原创 ES6声明变量的6种方式,var function let const import class

在ES5中,顶层对象的属性与全局变量是等价的。window.a = 1;a // 1a = 2;window.a // 2所以在ES6中,一方面规定,为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。var a = 1;window.a // 1let b = 1;window.b // undefined1. let的特点let声明的变量只在它所

2020-07-19 23:41:56 351

原创 谈谈对this对象的理解?

箭头函数不绑定this,箭头函数没有自己的this关键字如果在箭头函数中使用this,this关键字将指向箭头函数定义位置的thisfunction fn() { console.log(this);}const obj = {name: 'zhangsan'};fn.call(obj); // fn内部的this指向obj对象//{ name: 'zhangsan' }例子:var obj = { age: 20, say: () => {

2020-07-19 23:14:43 3037

原创 进程和线程的区别是什么?什么是Even Loop?异步任务是如何被执行的?

进程和线程的区别是什么?ans:我们知道javascript是单线程的语言,在讨论为什么是单线程之前,先弄清楚进程和线程的区别是什么。若将CPU比作一个工厂,进程就是这个工厂的车间。单个CPU一次只能运行一个任务,其他进程处于非运行状态,所以我们可以假设这个工厂的电力每次只能供一个车间工作。车间里面有很多工人,他们协同完成一个任务,线程就好比车间里面的工人,一个进程可以包括多个线程。车间的空间是工人共享的,即进程的内存空间可以被线程共享。但车间里的房间有大有小,有的只能容纳一个人,如厕所,有的可以容纳.

2020-07-19 12:46:38 240

原创 事件:什么是事件流?什么是事件模型?什么是事件代理?什么是事件对象?

什么是事件流?ans:事件流:描述从页面中接收事件的顺序(1) 事件冒泡:事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点(2) 事件捕获:不太具体的节点先接收事件,而具体的节点最后接收到事件(3) “DOM2级事件”:规定事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段事件“捕获”和“冒泡”执行次数和事件的执行顺序ans:按照DOM2级事件(1) 事件执行次数:元素绑定多少个事件,就执行多少次。前提是:事件确实被触发事件绑定几次就算几个事件,就算..

2020-07-19 08:39:39 359

原创 JS原型以及继承机制

对象如何创建?ans:通过构造函数模式与原型模式相结合。利用构造函数模式定义实例属性,利用原型模式定义方法和共享属性。如下代码所示:function Person() { this.friends = ["Haier", "John"];}Person.prototype.species = "人类";Person.prototype.habbit = function() { alert("打篮球");}var person1 = new Person();var.

2020-07-18 21:01:06 178

原创 说说对作用域链的理解?

作用域链的用途?ans:保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端:当前执行代码所在环境的变量对象作用域链的末端:全局执行环境的变量对象访问规则?ans:内部环境可以通过作用域链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量和函数如何延长作用域链?ans:(1)try-catch语句的catch模块:(2)with语句这两个语句都会在作用域链的前端添加一个变量对象。with会将指定对象添加到作用域链中,catch会创建一个新的变量对象,其中包含被抛出的错.

2020-07-18 14:47:58 285

原创 实现new方法

var Person = function(name, age) { this.name = name, this.age = age}function _new(constructor, params) { // 将arguments对象转换为数组 var args = [].slice.call(arguments); // 取出构造函数 var constructor = args.shift(); // 创建一个空对象,继承构造函数的pr

2020-07-17 22:02:13 112

原创 web前端相关知识原理

html/cssjs/jQuery/ES6知识点数据结构和算法计算机网络知识-原理方面Vue.js原理知识webpack相关知识

2020-07-17 11:12:49 102

原创 web前端知识点整理-常见问题

HTML/HTML5CSS/CSS3Javascript/jQuery/ES6手写js功能实现计算机网络常见问题VUE框架常见手撕代码题webpack

2020-07-17 09:47:04 117

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除