复习汇总1

 1. 为什么data是函数?

因为是对象的话,多处引用,修改一个组件的值,其他组件的值也会发送改变,所有用返回对象的函数,每一次返回的都是object实例,因为存储地址不同,所以不会发送以上的问题

2. this指向?

普通函数中如果没有调用this, 那么他就指向window   在严格模式中就指向undefined

函数中有多个对象时即使这个函数是被最外层的对象调用那this也还是指向上一级对象

箭头函数中不绑定this所以它会捕获上下文的this值作为自己的值

1.在全局中this指向window

2.直接调用函数this指向window

3.事件处理函数中this指向绑定事件的元素

4.obj.fn(); fn函数中this指向obj

5.回调函数中this指向window

6.构造函数中this指向实例化对象

3. 面向对象编程与面向过程的区别: 

1)面向对象编程(面向对象特点: 封装 继承 多态 ):

1.面向对象编程是一个基于现实世界模型的一种编程方法

2.将属性抽象成一个对象,在这个对象上创建属性和方法

3.把函数封装变为对对象的封装

ps:创建对象的方法六种:

                1.直接给对象绑定属性和方法

                2.通过字面量方式创建

                3.工厂函数   4.构造函数模式    5.原型模式     6.混合模式

2)面向过程编程:

分析实现效果的步骤,然后按照步骤用函数一步一步实现

ps:构造函数模式与工厂函数的区别:

                工厂函数return返回 方法不一样

 4. proto与prototype的关系/区别:

 __proto__是隐式原型

prototype是显示原型:用来实现基于原型的继承与属性的共享

可通过Object.getPrototypeOf()标准方法访问该属性),指向构造函数的原型对象。

5. 原型链:

每一个对象都要自己的原型_proto_ , 这个原型也有他自身的原型对象prototype ,以此类推, 上升到了object.prototype, 而object.prototype的_proto_是null , null没有属性和方法, 原型链尽头是null. 

 5.面向对象的继承

原型继承    构造函数继承    实例继承     组合继承    寄生组合继承    class类继承 

6.闭包原理:

函数中的函数读取函数内部的变量

优点:   1.能够读取函数内部的变量. 2.让这些变量一直存在于内存中,不会在调用结束后,被垃圾回收机制回收

缺点: 因为闭包会使函数中的变量保存在内存中,内存消耗大,所以不能滥用闭包

解决办法: 退出函数前,将不使用的局部变量删除 

 7. 构造函数原理

构造函数是一种特殊方法,用于初始化对象.在类的对象创建时,构造函数将被调用

优点: 能够通过instanceof识别对象

缺点: 每次实例化一个对象,都会把属性和方法复制一遍

解决办法: 把对象的方法指向同一个全局函数 通过原型对象(prototype),把方法写在构造函数的原型上

8. 回调函数

回调函数是一段可执行的代码段它作为一个参数传递给其他的代码

其作用是在需要的时候方便调用这段(回调函数)代码

优点: 简单,容易理解和实现

缺点: 不利于代码的阅读和维护,各个部分之间高度耦合(coupling)使得程序结构混乱,流程难以追踪,每个任务只能指定一个回调函数 

9.说一说你对promise的理解。

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。

Promise有哪些状态。 答:有三个状态:pending : 等待 fullfilled(resolved) :成功 rejected: 失败 

所谓promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。

Promise.all(),一个失败后,其他的还返回吗? 答:不会返回,promise.all()失败的时候只返回最先被reject失败状态的那个实例对象的值

Promise.all()、Promise.race()区别? 答:两者都是可以同时调用多个promise实现,Promise.all可以将多个实例组装成一个新的实例,成功的时候返回一个成功数组,失败的时候则返回最先被reject失败状态的值;其中有一个实例不成功则返回reject; race()是赛跑的意思,也就是说Promise.race([p1, p2, p3])里面的结果哪个获取的快,就返回哪个结果,不管结果本身是成功还是失败

10.简单说一下async/await的了解?(****)(请参考https://www.jianshu.com/p/fd6933ff6b81)  

答:async/await是写异步代码的新方式,它是generator的语法糖,以前的方法有回调函数和 Promise。async/await是基于Promise实现的,它不能用于普通的回调函数。 async/await与Promise一样,是非阻塞的。async/await使得异步代码看起来像同步代码,这正是它的魔力所在。单一的 Promise 链并不能发现 async/await 的优势, 但是,如果需要处理由多个 Promise 组成的 then 链的时候,优势就能体现出来了

11.Async&await和promise有什么区别?(参考https://www.jianshu.com/p/51f5fd21588e)

答: (1)函数前面多了一个async关键字。await关键字只能用在async定义的函数内。async函数会引式返回一个promise

(2)简洁:使用async和await明显节约了不少代码,不需要.then,不需要写匿名函数处理promise的resolve的值,不需要定义多余的data变量,还避免了嵌套代码。

(3)async/await让try/catch 可以同时处理同步和异步错误。try/catch不能处理JSON.parse的错误,因为他在promise中。此时需要.catch,这样的错误处理代码非常冗余。并且,在我们的实际生产代码会更加复杂

(4)async/await能够使得代码调试更简单 

12、写出本地存储和cookie的区别

本地存储:   可以设置有效期限 存储空间只有4KB左右

cookie优缺点

        cookie机制将信息存储于浏览器,因此可以作为跨页面全局变量,这是它最大的一个优点

常用场合:(1)保存用户登录状态;(2)跟踪用户行为.等等

cookie的缺点<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甜宝小妮儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值