阅读seajs记录

97 阅读1分钟

从阅读seajs获取的几个技巧点

slice

不仅可以用来截取字符串,还可以浅拷贝数组

// 左闭右开
let str = '李志,相信未来'
let str2 = str.slice(3, 5) // 相信

let arr = ['和你在一起', '热河', '忽然', '天空之城']
let arr2 = arr.slice(1, 2) // 热河

let source = [1, 2, 3]
let target = source.slice()
target[1] = 6
console.log(source) // [1, 2, 3]
console.log(target) // [1, 6, 3]

那么可以达到对复杂的具有嵌套关系的数组对象进行类似深拷贝的效果吗

let a = [{user: {name:function(){}, age: [1,2,3]}}]
let b = a.slice()
b[0].user.age[1] = 6
console.log(a[0].user.age[1]) // 6
console.log(b[0].user.age[1]) // 6

显而易见,是不行的。要达到深拷贝的目的,不妨看看这篇文章

脚本执行顺序

在一个循环中动态插入多个脚本到html中时,永远是先执行同步代码,在执行异步代码。 优先执行循环,然后执行脚本中同步代码,接着执行script的onload回调函数,最后执行脚本中的异步任务

seajs代码逻辑图

SeaJs.png