圣杯布局和双飞翼布局 通俗的来说就是左右两栏固定宽度,中间部分自适应的三栏布局。 两者本质圣杯布局 首先把left、middle、right都放出来 给它们三个设置上float: left, 脱离文档流; 一定记得给container设置上overflow: hidden; 可以形成BFC撑开文档 left、right设置上各自的宽度middle设置width: 100%; 接下来比较重要了: 给left、midd 2021-06-23 前端基础 css
js时间循环机制 浏览器环境下js引擎的事件循环机制1.执行栈与事件队列基本类型以及对象的指针存放在栈中,对象的值存放在堆内存中。执行栈:js引擎在解析一段代码的时候,将其中的同步代码按照执行顺序加入到执行栈中,然后从头开始执行。当执行完毕后,当前函数的执行上下文会从栈顶弹层出,随之函数及其执行上下文会被销毁,其中的变量会被浏览器回收。事件队列:js引擎遇到异步事件后并不会一直等待其返回结果,而会将这个事件挂起,继 2021-06-23 前端基础 javaScript
v8垃圾回收机制 1、为何需要垃圾回收在v8引擎执行js代码的过程中,当遇到函数的情况时,会为其创建一个函数执行的上下文,并添加到调用堆栈的栈顶,函数的作用域中包含了该函数中声明的所以变量,当函数执行完毕后,对面的执行上下文会从栈顶弹出,函数的作用域随之销毁,其包括的所以变量也会统一释放并自动回收。如果不回收,必然导致内存暴增,引发内存泄漏。 2、v8引擎的内存限制由于js的单线程机制和垃圾回收机制,V8引擎为了减 2021-06-23 前端基础 javaScript
this、call、apply、bind this在JavaScript中,this的指向是调用时决定的,而不是创建时决定的,this永远指向最后调用它的那个对象。 全局上下文在全局上下文中,this指全局对象 this等价于window对象 var === this. === window.在浏览器里面this等价于window对象,如果你声明一些全局变量,这些变量都会作为this的属性。 函数上下文在函数内部,this的值取决于函 2021-06-17 前端基础 javaScript
instanceof、typeof typeof实现原理typeof用于判断变量的类型,可以判断number、string、object、undefined、function、boolean、symbol 这7种类型,判断不是object类型的时候可以比较清楚的告诉我们具体是哪一类,但不能明确告诉我们object是哪一种。由于js底层存储变量的时候,会在变量的机器码的低位1-3位存储其类型信息。 000:对象 010:浮点数 10 2021-06-17 前端基础 javaScript
原型、继承 原型在规范里,prototype 被定义为:给其它对象提供共享属性的对象。 JS是通过函数来模拟类,当我们创建一个函数的时候,js会给这个函数自动添加prototype属性,值是一个包含constructor属性的对象,不是空对象。当我们把函数当成构造函数通过new关键词调用的时候,js会帮我们创建该构造函数的实例,实例继承构造函数prototype的所以属性和方法(实例通过设置自己的__pro 2021-06-17 前端基础 javaScript
js执行上下文、作用域链、闭包 执行上下文是评估和执行 JavaScript 代码的环境的抽象概念,每当 Javascript 代码在运行的时候,它都是在执行上下文中运行。执行上下文包括: 1、全局执行上下文 2、函数执行上下文 3、Eval函数执行上下文 三个重要属性 变量对象 作用域链 this 执行栈用来存储代码运行时创建的所有上下文(先进后出)但javascript引擎第一次遇到你的脚本时,它会创建一 2021-05-25 前端基础 javaScript
常用的ES6优化升级内容 一、let 和 const 命令let具有自己的块级作用域,且修复了var声明带来的变量提升问题。使用const声明常量,是不可更改的。 二、对String字符串类型做的常用升级优化 模板字符串(``) 在String的原型上新增includes()方法,取代传统的indexof,语义更清晰 另外还新增了startsWith(), endsWith(), padStart(),padEnd() 2021-05-24 前端基础 javaScript
使用Proxy实现简易的vue双向数据绑定 在实现vue双向数据绑定之前,先了解Proxy相关的概念和用法 proxy概念Proxy 对象用于定义基本操作的自定义行为(如属性查找、赋值、枚举、函数调用等)。 一些术语 handle包含捕捉器(trap)的占位符对象,可译为处理器对象 traps提供属性访问的方法。这类似于操作系统中捕获器的概念。 target被 Proxy 代理虚拟化的对象。语法const p = new Proxy(tar 2021-05-21 框架原理 javaScript vue
手写防抖与节流函数 我们经常会绑定一些持续触发的事件,比如resize、scroll、mousemove等等,如果事件调用无限制,会加重浏览器负担,导致用户体验差,我们可以使用debounce(防抖)和throttle(节流)的方式来减少频繁的调用,同时也不会影响实际的效果。 防抖的概念触发事件后n秒后才执行函数,如果在n秒内触发了事件,则会重新计算函数执行时间防抖函数可以分为立即执行,和非立即执行两个版本 非立即 2021-05-21 前端基础 基础知识 javaScript