2020-09-01

rem布局原理:通过不同视口下html字体大小,实现等比缩放,在vscode中装pxtorem插件,在设置里设置跟字体大小,1rem等于多少px,就可以直接把px转成rem。在vue中用postcss-pxtorem,建一个postcss.config.js,在里面设置参数后,就可以了。

继承:

垃圾回收:1、按引用,根据一个js对象被引用的次数,引用一次,引用次数加1,当引用次数为0时,所占用内存就会被回收/     

                  2、标记清除法,根据当前对象是否可以直接被当前环境访问到,访问不到就清除。可以解决循环引用的问题(防止内存泄漏)

闭包会把局部变量放到全局变量来访问,当闭包过多就会造成内存泄漏,闭包获取到的变量在不使用的时候应该手动清除。把变量设置为空 null

内存管理:像C语言这样的底层语言一般都有底层的内存管理接口,JavaScript自动进行了分配内存,并且在不使用它们时“自动”释放。 释放的过程称为垃圾回收。

事件委托:给父元素注册事件,加addeventlistener,当子元素触发该事件时,父元素事件也会被触发,根据e.target.nodeName 判断是否是子元素触发,=li,如果是子元素,就执行操作。利用冒泡

事件冒泡:从当前元素冒泡到html

ES6:let const,(声明一次后,不能在声明第二次,没有作用域提升,const声明常量),async(对异步函数做操作,一般就是封装axios),await后面跟promise对象,当promise事件完成后才会执行下一行代码,可以以同步函数的方式写异步代码。symbol,用对象的属性上,这个属性就变得独一无二了,flat可以把多维数组转化为一维数组,将嵌套的数组拉平[1,[2,3[4,5]]].flat[infinity]从axios中拿出来的数据,children套children,树形结构,for  of既可以遍历对象也可以遍历数组,...展开运算符,将一个数字组转化为逗号分割的参数序列。

created和activated区别

created():在创建vue对象时,当html渲染之前就触发;但是注意,全局vue.js不强制刷新或者重启时只创建一次,也就是说,created()只会触发一次;

activated():在vue对象存活的情况下,进入当前存在activated()函数的页面时,一进入页面就触发;可用于初始化页面数据等

  • 字符串的常用方法

  1. toLowerCase(): 把字符串转为小写,返回新的字符串。

  2. toUpperCase(): 把字符串转为大写,返回新的字符串。

  3. charAt(): 返回指定下标位置的字符。如果index不在0-str.length(不包含str.length)之间,返回空字符串。

var str='fffggggHUEJDOOO'; console.log(str.charAt(6)) //g

  1. charCodeAt(): 返回指定下标位置的字符的unicode编码,这个返回值是 0 - 65535 之间的整数。

  2. indexOf(): 返回某个指定的子字符串在字符串中第一次出现的位置

  3. lastIndexOf(): 返回某个指定的子字符串在字符串中最后出现的位置。

  4. slice(): 返回字符串中提取的子字符串。

  5. substring(): 提取字符串中介于两个指定下标之间的字符。

  6. substr(): 返回从指定下标开始指定长度的的子字符串

  7. split(): 把字符串分割成字符串数组。

  8. replace(): 在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

var str="hello WORLD";

var reg=/o/ig; //o为要替换的关键字,不能加引号,否则替换不生效,i忽略大小写,g表示全局查找。var str1=str.replace(reg,"**")

console.log(str1); //hell** W**RLD

match(): 返回所有查找的关键字内容的数组。

var str="To be or not to be";

var reg=/to/ig;

var str1=str.match(reg);

console.log(str1); //["To", "to"]

console.log(str.match("Hello")); //null

 

订阅制模式

  • 实现一个监听器Observer,用来劫持并监听所有属性,如果有变动的,就通知订阅者。

  • 实现一个订阅者Watcher,可以收到属性的变化通知并执行相应的函数,从而更新视图。

  • 实现一个解析器Compile,可以扫描和解析每个节点的相关指令,并根据初始化模板数据以及初始化相应的订阅器。

数组的常用方法

 

shift() 方法:把数组的第一个元素删除,并返回第一个元素的值

unshift:将参数添加到原数组开头,并返回数组的长度

push() 方法:可向数组的末尾添加一个或多个元素,并返回新的长度,(用来改变数组长度)。

pop() 方法:用于删除并返回数组的最后一个(删除元素)元素,如果数组为空则返回undefined ,把数组长度减 1 返回删除的那个元素

Array.slice 截取数组的实现方法
slice() 方法可从已有的数组中返回选定的元素

concat() 方法:用于连接两个或多个数组,并返回一个新数组,新数组是将参数添加到原数组中构成的

join() 方法:用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。

  1. reverse() :方法用于颠倒数组中元素的顺序。
  2. splice() :方法向/从数组中添加/删除项目,然后返回被删除的项目。
  3. sort(orderfunction):按指定的参数对数组进行排序
  4.  

  5. 布局

.container {

display: grid;

place-items: center;

}

左上角布局,右下角布局

place-items: start; place-items: end;

2.要里面的内容横向居中

.container {

display: flex;

flex-wrap: wrap;

justify-content: center;

}

父:display: flex; flex-wrap: wrap;

给子孩子(如果有多余宽度,项目是否可以扩大。 缩小。想要一个多宽)

flex: 0 1 150px;

3.两列布局 给父盒子加 第一列的宽度是minmax(150px, 25%),即最小宽度为150px,最大宽度为总宽度的25%;第二列为1fr,即所有剩余宽度。

.container {

display: grid;

grid-template-columns: minmax(150px, 25%) 1fr;

}

4.三明治布局

给父盒子

.container {

display: grid;

grid-template-rows: auto 1fr auto;

}

5.圣杯布局

给总的大盒子

.container {

display: grid;

grid-template: auto 1fr auto / auto 1fr auto;

}

grid-template-rows和grid-template-columns都是auto 1fr auto,就表示页面在垂直方向和水平方向上,都分成三个部分。第一部分(页眉和左边栏)和第三部分(页脚和右边栏)都是本来的内容高度(或宽度),第二部分(内容区和主栏)占满剩余的高度(或宽度)。

flex

左对齐,右对齐,居中,两端对齐,项目之间的间隔相等,每个项目两侧之间的间隔相等

.box {

justify-content: flex-start | flex-end | center | space-between | space-around;

}

使元素垂直水平居中的几种办法

  • display:flex;

      justify-content:center

      align-items:center

  • 子绝父相   子盒子top left 50%     transform:translate(-50%,-50%)
  • .fu {

display: grid;

place-items: center;

}

  • 子绝父相 利用定位 各一半100的话要-50px;

top:50%;  left:50%;   margin-top:-50px;  margin-left:-50px;

  • 子绝父相 利用margin:auto;

.child{  position:absolute;  margin:auto;  top:0; left:0;  right:0;  bottom:0; }

1.flex:1代表 flex:1 1 auto

  1. 第一个参数表示: flex-grow 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大

  2. 第二个参数表示: flex-shrink 定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小

  3. 第三个参数表示: flex-basis**给上面两个属性分配多余空间之前, 计算项目是否有多余空间, 默认值为 auto, 即项目本身的大小**

  • JS执行过程

  • js并不是真正从上到下依次执行的,js在执行这些代码之前首先要进行一个预解析,它先去找所以的定义,变量的定义函数的声明,并且把变量的定义函数的声明进行提升,提升到这个作用域的最顶层。当执行到函数内部的时候,在执行函数内部的预解析,执行完预解析后再去执行代码,代码是一行一行的执行的。

  • 是单线程的,浏览器执行JS脚本的时候,当js中的其中一环报错或者死循环,那么js就不会再继续往下执行了;直到这个问题被解决。会将所有的定时器都放到一个队列里面,当主线程的代码执行完成之后再执行队列里面的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值