Mock.js拦截AJAX的原理是什么?
源码src/mock.js文件的58行:
var XHR
if (typeof window !== 'undefined') XHR = require('./mock/xhr')
Mock.mock = function(rurl, rtype, template) {
// Mock.mock(template)
if (arguments.length === 1) {
return Handler.gen(rurl)
}
// Mock.mock(rurl, template)
if (arguments.length === 2) {
template = rtype
rtype = undefined
}
// 拦截 XHR
if (XHR) window.XMLHttpRequest = XHR
Mock._mocked[rurl + (rtype || '')] = {
rurl: rurl,
rtype: rtype,
template: template
}
return Mock
}
如果调用了Mock.mock方法,那么就用MockXMLHttpRequest替换XMLHttpRequest ,
如果使用继承的方式来实现可以不可以呢?
参考文档:
- 【图解】ES5的各种继承方式,及其优缺点。 – 如影i – 博客园 (cnblogs.com)
- ES5实现继承_es5继承_六便士的理想的博客-CSDN博客
- 来,我们手写一个简易版的mock.js吧(模拟fetch && Ajax请求) – 外婆的 – 博客园 (cnblogs.com)
- 引入mock后,axios响应头的responseType失效,导致乱码了 · Issue #434 · nuysoft/Mock (github.com)
- 处理后台返回的二进制流图片时,设置返回类型responseType: ‘arraybuffer‘时不起作用,接收的为乱码而不是arraybuffer_responsetype 不起作用_soraer的博客-CSDN博客
正文完