前端面试题2答案
1.this指向:https://www.cnblogs.com/jiayuexuan/p/9366136.html
applycallbind联系与区别:apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了改变函数内部this的指向);
如果使用apply或call方法,那么this指向他们的第一个参数,apply的第二个参数是一个参数数组,call的第二个及其以后的参数都是数组里面的元素,就是说要全部列举出来;
他们的常用用法:
1.数组之间的追加;
2.获取数组中的最大值和最小值,利用他们扩充作用域拥有Math的min和max方法;
由于没有什么对象调用这个方法,所以第一个参数可以写作null或者本身;
var numbers = [5, 458 , 120 , -215 ];
var maxInNumbers = Math.max.apply(Math, numbers), //458
var maxInNumbers = Math.max.apply(Math, numbers), //458
maxInNumbers = Math.max.call(Math,5, 458 , 120 , -215); //458
bind()--也是改变函数体内this的指向;
bind会创建一个新函数,称为绑定函数,当调用这个函数的时候,绑定函数会以创建它时传入bind()方法的第一个参数作为this,传入bind()方法的第二个及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数;
bind与apply、call最大的区别就是:bind不会立即调用,其他两个会立即调用
vuex工作原理:
https安全性:https实际上就是在TCP层与http层之间加入了SSL/TLS来为上层的安全保驾护航,主要用到对称加密、非对称加密、证书等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的安全性。
一个实例化的Vuex.Store由state, mutations和actions三个属性组成:
- state中保存着共有数据
- 改变state中的数据有且只有通过mutations中的方法,且mutations中的方法必须是同步的
- 如果要写异步的方法,需要些在actions中, 并通过commit到mutations中进行state中数据的更改.
promise:详解
Promise
是一个美好的承诺,承诺本身会做出正确延时或异步操作。承诺会解决callback
处理异步回调可能产生的调用过早,调用过晚、调用次数过多过少、吞掉可能出现的错误或异常问题等。另外承诺只接受首次 resolve(..)
或 reject(..)
决议,承诺本身状态转变后不会再变,承诺所有通过 then(..)
注册的回调总是依次异步调用,承诺所有异常总会被捕获抛出。她,是一个可信任的承诺。新建一个Promise实例:
1
|
const promise = new Promise(function(resolve, reject) {
|
Promise实例生成以后,可以用then方法分别指定resolved
状态和rejected
状态的回调函数。
1
|
promise.then(function(value) {
|
getComputedStyle方法的功能得以体现,它可以获取元素CSS属性的最终计算值。