typescript是js类型的超集
1. interface定义:
在面向对象语言中,interface是对行为的抽象,具体实现则是由class去实现(implements),在ts中接口的作用类型检查
2. object.defineProperty与proxy的区别
- proxy直接劫持整个对象返回一个新对象可以直接监听数组变化,我们可以只操作新的对象达到目的,而object.defineProperty只能便利对象属性直接修改
- proxy缺点:浏览器兼容问题使用polyfill无法适配,
- object.defineProperty无法简体数组变化,vue2对数组的push/pop/shift/unshift/splice/sort/reverse进行hock,其他的数组方法时无法识别的
3. angular2的双向绑定原理
脏值检查(存储所有变量的值,每当变量发生变化的时候需要检测,将旧值和新值进行比较,不相等则更新对应的视图)
在ng2+中优势:
- 单向数据流只会从父->子
- 以组件为单位维度单独检测
- 生产环境只进行一次检查
- 可自定义的变化检测策略: Default 和 onPush
4. cookie
cookie在浏览器中,可以在下次访问的时候附带它发送给服务器,服务器可以通过识别cookies来判断是哪个用户,然后判断用户是否登录,然后返回对应的想要一般每条cookie的长度不超过4kb,每个domain下最多20条,cookie弥补了HTTP协议的无状态
5. resetful api
用url定位资源,用http method描述操作
- 原则:
协议 / 域名 / 版本 / 路径 (使用名词不可以使用动词)
/ HTTP {(GET / POST (新建一个资源 ) / PUT (修改整个资源)/ PATCH (修改单个属性) / DELECT / OPTIONS (获取信息)) }
/ 过滤信息 (api提供参数,过滤返回结果,例如排序,分页,选择 ?pageNumber=2&perSize=100)
/ 状态码 (204: no content ;403 : forbidden ; 404 : not found ; 500:服务器内部错误 ; 406 Not caaeptable )
/ 错误处理
/ 返回结果
/ 使用HATEOAS的Hypermedia api
/ 认证
6. 序列化和反序列化
- node 使用自带的json.stringfy 和json.parse;
querystring 自带模块 querystring.stringfy / querystring.parse - node 优点:单线程 / v8虚拟机 / 非阻塞IO / 事件驱动 / RESTful API
7. promise / async await
- promise
- reject后,一定会进入到then中的第二个回调,如果then中没有写第二个回调,则进入catch
var p1=new Promise((resolve,rej) => {
console.log('没有resolve')
//throw new Error('手动返回错误')
rej('失败了')
})
p1.then(data =>{
console.log('data::',data);
},err=> {
console.log('err::',err)
}).catch(
res => {
console.log('catch data::', res)
})
// 没有resolve
// err:: 失败了
p1.then(data =>{
console.log('data::',data);
}).catch(
res => {
console.log('catch data::', res)
})
// 没有resolve
// catch data::失败了
- resolve的东西以但进入then的第一个回调,一定不会进入catch
- promise 无法捕捉一部一场异步异常需要手动调用reject才会被.catch捕捉到
- async await
async await 让异步代码开起来表现起来像同步代码
await 是让出线程的标志,
8. class 中的super
-
this关键字指向当前对象,而es6中的super指向当前对象的原型对象,
-
super在普通方法中指向父类的原型对象,在静态方法中,指向父类
-
通过super调用父类的方法时,super会绑定子类的this
-
在普通方法中,指向父类的原型对象,在静态方法中,指向父类。
-
super 作为函数调用时,代表父类的构造函数,es6中,要求子类的构造函数必须执行一次super()函数。子类调用super继承父类的this对象然后再用子类的构造函数对this进行加工。作为函数时,super()只能在子类的构造函数中使用。
https://www.cnblogs.com/wenxuehai/p/10361653.html
https://blog.csdn.net/a419419/article/details/82772412 -
es6中constructor时用来创建和初始化class类创建的对象的特殊方法。
9. 箭头函数什么情况下不能用
- 定义对象方法
1.1. 定义字面量方法的时候,由于箭头函数中this永远指向window
1.2. 定义原型方法的时候,箭头函数会导致运行时执行上下文错误 - 定义事件回调
- 定义构造函数
https://www.cnblogs.com/huyanluanyu/p/9958676.html
10. 闭包
- 定义在一个函数内部的函数,本质是将函数内部和函数外部连接起来的一座桥梁
- 作用:可以读取函数内部的变量,让这些值始终保持在内存里;父函数将仔函数作为返回值,再将子涵赋值给一个变量,所以子函数会存在于内存中,而子函数依赖于父函数存在,所以父函数也会存在于内存中,这样就不会被垃圾回收机制回收
- 缺点:由于函数中的变量会被保存在内存中,内存消耗很大,所以如果滥用,会造成网页性能问题,导致内存泄漏,解决方案:在推出函数之祈安,把不使用的局部变量删除
网友评论