适配器模式 中间处理成合适的
class Power {
charge() {
return `220v`;
}
}
class Adaptor {
constructor() {
this.power = new Power();
}
charge() {
let v = this.power.charge();
return `${v}=>12v`
}
}
class Client {
constructor() {
this.adaptor = new Adaptor()
}
use() {
console.log(this.adaptor.charge())
}
}
let c1 = new Client()
c1.use()
实例 ajax
function ajax(options) {
let defaultOptions = {
method: 'GET',
dataType: 'json',
}
for (let attr in options) {
defaultOptions[attr] = options[attr] || defaultOptions[attr];
}
console.log(defaultOptions);
}
function transform(str) {
return JSON.parse(str)
}
ajax({
url: 'http://baidu.com',
method: 'POST',
success(str) {
let result = transform(str);
console.log(result)
return result;
}
})
实例 串行连续读取三个文件的内容
let fs = require('fs');
function promisify(readFile) {
return function (...args) {
return new Promise((res, rej) => {
fs.readFile(...args, function (err, data) {
if (err) {
rej(err)
} else {
res(data)
}
})
})
}
}
(async function get() {
let readFile = promisify(fs.readFile);
let f1 = await readFile('1.js', 'utf8');
let f2 = await readFile('2.js', 'utf8');
})()
实例 JQ ajax换fetch
// let $ = require('jquery');
window.$ = {
ajax(options) {
return fetch(options.url, {
method: options.method || 'GET',
body: JSON.stringify(options.data) || {}
}).then(response => response.json());
}
}
$.ajax({
url,
typy: 'POST',
dataType: 'json',
data: { id: 1 },
}).then((data) => {
console.log(data);
})