原型和原型链、ajax、fetch、axios三者的区别、箭头函数和普通函数的区别

原型和原型链

原型prototype:

js在声明构造函数的时候,会在内存中生成一个对象,这个对象就是该函数的原型对象。

原型对象上有个constructor属性,指向它的构造函数;

构造函数拥有一个prototype属性,该属性指向的是它的原型对象。

通过构造函数实例化出来的对象并没有prototype属性,但是拥有隐式原型__proto__属性,该属性指向此对象的构造函数的原型对象。//x.__proto__===X.prototype

 

原型链:当一个实例化对象在查找一个属性或方法时,如果自身没有,则会通过隐式原型__proto__去查找它的构造函数的原型对象,如果此原型对象上也没有,则会寻找更上一级的原型对象,直到最后找到为止,在这个一层一层向上查找的过程中形成的链式结构就是原型链。

!!!原型对象xxx.prototype上可放入公有的属性和方法,实例化对象即可自由取用。

!!!原型链的源头为Object.prototype,它的隐式原型__proto__指向的是null。

 

ajax、fetch、axios三者的区别

ajax:这个一种网页局部刷新技术,它是基于XHR(XMLHttpRequest)开发的,针对于MVC架构模式

 

fetch: ES6的新的api,使用原生js进行开发,没有采用XHR,是基于Promise的。

特点:

1.fetch只对网络请求报错,400和500都当作成功处理,需要进一步封装处理

2.fetch默认不携带cookie,需要添加配置项

3.fetch不支持中止和超时控制

4.fetch无法原生检测请求进度,但是XHR可以

 

axios:基于Promise对XHR二次封装的请求库,在浏览器端创建XMR,在nodejs中使用http模块

特点:

1.axios支持Promise API

2.axios从浏览器创建XHR,在nodejs中使用http模块

3.axios可以自动转换json对象

4.axios可以支持请求拦截(日志或权限)和响应拦截(格式化内容)

5.支持中止和超时控制

6.支持CRSF保护。

 

三者对比:

·早期出现的XMLHttpRequest,使得javascript可以异步发送请求,这项异步技术就是ajax

·jQuery封装了ajax,使得异步处理结果可以通过回调显示,但是出现了回调地狱

·为了解决回调地狱问题,Promise应运而生

·axios就是基于Promise二次封装了XHR,这是一个第三方的请求库,在浏览器创建XHR,在nodejs中使用http模块

·fetch出现在ES6时期,这是使用原生js开发出来的API,天生自带Promise

 

箭头函数和普通函数区别

1.定义方式:箭头函数使用箭头定义,普通函数使用关键词定义

2.构造函数:箭头函数不能用于构造函数,普通函数可以构造函数创建对象实例

3.1.this指向:箭头函数没有具体的this指向,依赖于父级普通函数的this指向;普通函数的this指向的是调用该函数的对象

3.2.this指向修改:箭头函数的this指向无法修改,call()、apply()、bind()方法无法修改箭头函数this指向

4.arguments参数:箭头函数无法使用arguments参数,确认代之的是res参数的...;普通函数可以使用arguments参数

5.prototype原型:箭头函数不具有prototype原型,普通函数具有

6.Generator函数:箭头函数不能Generator函数,无法使用yield关键字;普通函数可以

posted @ 2022-11-17 17:41  新时代的搬砖人  阅读(111)  评论(0)    收藏  举报