今日收获总结 (前端知识点3)

一.Vuex

vuex是集中管理项目公共资源的。

vuex有以下几种属性:

1.state:存储公共管理的数据

2.mutation:改变state中数据的方法(注:不要在其中写ajax,不然数据就不可跟踪)

3.getters:改变store的计算属性,getter的返回值会根据它的依赖被缓存起来,只有当它的依赖值发生了改变才会被重新计算。

4.actions:类似于mutation,不同的是在Action提交的是mutation而不是直接变更状态,Action可以包含任意异步操作。

5.model:将store分割成模块。每个模块有自己的state、mutation、action、getter,甚至是嵌套子模块,从上至下进行同样方式的分隔

二. 说一说ES6中箭头函数

箭头函数相当于匿名函数,简化了函数的定义。

写法:1.单条语句 var f=v => v ; 等价于var f = function{ return a; } { f(1) }

2.多条语句 { } return var f = (a,b) => { let result = a + b; return result; } f (6,2)

最大的特点是没有this,this是从外部获取,就是继承外部的执行上下文中的this,由于没有this关键字所以箭头函数不能作为构造函数。

( 1.箭头函数this为父作用域的this,不是调用时的this ; 2.箭头函数不能作为构造函数,不能使用new)

三. 说一说垃圾回收机制

当一个值在内存中失去作用时,垃圾回收机制会根据特殊的算法找到它,并将其回收,释放内存。

垃圾回收机制根据存储方式的不同分为栈垃圾回收和堆垃圾回收。

1.栈回收机制:当一个方法执行结束后,JS会向下移动ESP来销毁该函数保存在栈中的上下文,遵循先进后出。

2.堆回收机制:当方法结束后,栈空间处理完成,但是堆空间中还有相关数据,需要将其回收。

为了更好的清理,V8根据对象的生命周期不一样,把堆分为新生代和老生代。新生代保存生存时间短的对象;老生代保存相对较长的对象。新生代使用Scavenge算法。老生代采用 标记-清除和标记-整理算法。

四.说一说JS变量提升

变量提升是指JS的变量声明和函数声明会在代码编译期,提升到代码的最前面。 

变量提升的前提是使用Var关键字进行声明的变量,并且变量提升的时候只有声明被提升,赋值并不会提升

相当于是这样

 

 先给他一个初始值undefined,所以返回的也是undefined,只有var是这样。(变量初始化前访问该变量返回的是undefined)

函数声明提升(在函数声明前可以带哦用该函数)

 

let 和 const则不行

 

五.说一说this指向(普通函数、箭头函数)

普通函数中的this

1.谁调用了函数或者方法,那么这个函数或者对象中的this就指向谁

let getThis = function(){

    console.log(this)

}

let obj = {

    name:""Jack",

    getThis:function(){

        console.log(this)

    }

}

//getThis()方法是由window在全局作用域中调用的,所以this指向调用该方法的对象,即window

getThis()//window

obj.getThis() //obj

2.匿名函数中的this:匿名函数的执行具有全局性,则匿名函数中的this指向是window,而不是调用该匿名函数的对象;

let obj = {

    getThis:function(){

        return function(){

            console.log(this)

        }

    }

}

obj.getThis()() //window

 

1.箭头函数中的this

  1. 箭头函数中的this是在函数定义的时候就确定下来的,而不是在函数调用的时候确定的;
  2. 箭头函数中的this指向父级作用域的执行上下文;

3.箭头函数无法使用apply、call和bind方法改变this指向,因为其this值在函数定义的时候就被确定下来。

列1:首先,距离箭头函数最近的是getThis(){},与该函数平级的执行上下文是obj中的执行上下文,箭头函数中的this就说下注释处的this,即obj.

列2:该段代码中存在2两个箭头函数,this找不到对应的function(){},所以一直往上照到指向window。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值