// utils.js 文件
const md5 = require(\'../md5.js\')
function creatheaderkey(obj){
let did = Math.ceil(Math.reandom()*10) // 随机数
let time1 = new Date().getTime() //时间毫秒数
let time = (time1+\' \').slice(0,-3) //截取前十位
let appType = \'wechatApp\'
let init = {
\'app-type\': arrType,
\'did\': did,
\'time\': time
}
// 2.1 先把对象合并成一个对象
let init = Object.assign({}, init,obj} // init 函数内部的对象 obj 外部传进来的对象 得到一个新的对象
//=== Object.assign() 是合并对象的方法 只是其中之一 也有jQuery.extend() 也可以实现 或者原生JavaScript 反正多种
let pro = [ ] //声明一个空数组
let $i = 0
for(let key in init) { //取出对象里面的键 添加到数组中
pro[$i] = key
$i++
}
pro.sort() //把数组里面进行排序
let string = \'\'
let $j = 0
for (let tmp in init) { // 根据排序好的进行重新赋值
string+= pro[$j] + init[pro[$j]]
$j++
}
console.log(string) // 得到排序好的值
let sign = md5.hexMD5(string) // 得到加密后的字符串
let rourse = {
\'sign\' : sign
\'app-type\': arrType,
\'did\': did,
\'time\': time
}
//== 2.2 如果需要把外部进来的对象 返回出去 在加密完成后 再次合并对象 在这里就用个原生的方法实现吧
function extend (target,resource) {
for(let key in resource) {
if( resource.hasOwnProperty(key) && !target.hasOwnProperty(key){ //判断对象是有相同的属性
target[key] = resource[key]
}
}
return target
}
//== 把两个对象传进去进行操作 返回一个新的
let rourse = extend(init,obj) 调用就可以直接得到对应的值
return rourse //return 出去
---------------------------------------------拓展加密
//2..需要从外部传进来进行先进行排序 后加密 可以传进来一个对象object
}
module.exports = { //导出
creatheaderkey: creatheaderkey
}
//=====引入js 调用
const utils = require(../urils.js)
let headerkey = utils.creatheaderkey()
console.log(headerkey) // 不传参的情况下 得到排序好的值
let obj = {
\'token\' : \'asasdasdadasdasd123132123\'
}
let headerkey =utils.creatheaderkey(obj)
console.log(headerkey) // 返回一个带参数的值