图森未来 一面 记录总结

1. vue的生命周期执行

1.1 vue生命周期是什么?

每个组件都是独立的,每个组件都有自己的生命周期,从一个组件创建,数据初始化,挂载,更新,销毁,就是整个的生命周期。
具体的方法有:
beforeCreate:在实例初始化之后,data observer和事件配置之前被调用

created: data已经初始化,计算属性,event/watch事件回调,但是dom并没有挂载

beforeMount: 在挂载前被调用,render函数收藏被调用生成虚拟dom

mounted: 挂载完成,dom树已经生成,渲染到页面,可以进行dom操作

beforeUpdate: 数据有更新时调用

updated: 虚拟dom重新渲染

beforeDestroy: 销毁之前调用,还可以访问实例的数据
destroyed: 销毁后调用(watch,子组件监听器都已经清除)

1.2 vue的生命周期以及每个周期干了什么?

export default {
  data () {
    return {
    rendered: false,
    }
},
beforeCreate(){
    console.log(this.rendered,'beforeCeate rendered');  //undefined  
},
created() {
    console.log(this.$el,'created el');//undefined
    console.log(this.rendered,'created rendered');  // false
},
beforeMount() {
    console.log(this.$el,'beforeMount el');//undefined
},
mounted() {
    console.log(this.$el,'mounted el');
},
}

在这里插入图片描述

1.3 vue中内置的方法 属性和vue生命周期的运行顺序(methods、computed、data、watch)

props => methods =>data => computed => watch; 懂了没

1.4 父子组件的生命周期调用

加载渲染过程
  父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted
子组件更新过程
  父beforeUpdate->子beforeUpdate->子updated->父updated
父组件更新过程
  父beforeUpdate->父updated
销毁过程
  父beforeDestroy->子beforeDestroy->子destroyed->父destroyed

2. 事件循环

宏任务主要包含:script( 整体代码)、setTimeout、setInterval、I/O、UI 交互事件、setImmediate(Node.js 环境)

微任务主要包含:Promise、MutaionObserver、process.nextTick(Node.js 环境)

task分为两大类, 分别是 Macro Task (宏任务)和 Micro Task(微任务), 并且每个宏任务结束后, 都要清空所有的微任务,

3. 原型链

在这里插入图片描述

4. 代码输出题1

console.log ('1'setTimeout(function{
  console.log('2')
}, 0)

new Promise(resolve => {
  console.log('3')
  resolve()
  console.log('4')})
.then(function() {
  console.log('5')
})
.then(function() {
  console.log('6')
})
console.log('7')

1,3,4,7,5,6,2

5. 代码输出题2

setTimeout(() => {
  console.log('timer1')

  Promise.resolve().then(function() {
    console.log('promise1')
  })
}, 0)

setTimeout(() => {
  console.log('timer2')

  Promise.resolve().then(function() {
    console.log('promise2')
  })
}, 0)

timer1 promise1 timer2 promise2

6. 代码输出题3

var a = {}
a.__proto__ === Object.prototype
Object.prototype.__proto__ === null
function b(){}
b.__proto__ === Function.prototype

Function.prototype.__proto__ === Object.prototype

b.proptype = {
  color: 'red'
}

function b() { }
b.proptype = {
  color: 'red'
}
c = new b()
// console.log(c)
// console.log(c.color) // red
c.color = 'blue'
console.log(c)  // b { color: 'blue' }
console.log(b)  // [Function: b] { proptype: { color: 'red' } }
// console.log(b.proptype.color) // red

7. 代码

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:

1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例:
“” // true
“(” // false
“]” // false
“()” // true
“()[]{}” // true
“(]” // false
“([)]” //false

var isValid = function (s) {
 let stack = []
 for(let str of s) {
   if (str === "(") {
    stack.push(")")
   } else if (str === "[") {
    stack.push("]")
   } else if (str === "{") {
    stack.push("}")
   } else {
     if(str !== stack.pop()) return false 
   }
 }
 return stack.length > 0 ? false : true
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值