深拷贝和浅拷贝
深拷贝和浅拷贝的区别假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。 深拷贝,是拷贝对象各个层级的属性,拷贝对象的地址。例如:JSON.parse(JSON.stringify())(特殊情况下无法使用,见文章末尾) 浅拷贝,指针指向堆中相同的地址,所有会改变原来的数据。例如:Object.assign() Array.prototype.slice() 对象的扩展运算符(…)深拷贝还是浅拷贝 如果只是一层数组或是对象,其元素只是简单类型的元素,那么属于深拷贝(即只有一层拷贝) let a = { age: 22, name: 'abc'}let b = {...a};b.age = 18;console.log(a.age); // 22console.log(b.age); // 18 如果数组或对象中的元素是引用类型的元素,那么就是浅拷贝 let a = { age: 22, name: 'abc', ad ...
动态星空Sky粒子特效背景
[Blogroot]\_config.butterfly.yml 找到 index_img 设置为空: # The banner image of home pageindex_img: [Blogroot]\_config.butterfly.yml 找到 background 设置渐变色: # Website Background (設置網站背景)# can set it to color or image (可設置圖片 或者 顔色)background: 'linear-gradient(to right top, #009fff, #ec2f4b)' [Blogroot]\themes\butterfly\source\css\_global\index.styl 找到 #web_bg 设置渐变动画: #web_bg { position: fixed; z-index: -999; width: 100%; height: 100%; background: $web-bg; background-at ...
命名规范
一、导航类导航:nav 主导航:mainbav 子导航:subnav 顶导航:topnav 边导航:sidebar 左导航:leftsidebar 右导航:rightsidebar 菜单:menu 子菜单:submenu 标题:title 摘要:summary 二、页面结构容器:container 页头:header 内容:content/container 页面主体:main 页尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left right center 三、功能标志:logo 滚动:scroll 广告:banner 标签页:tab 登录:login 文章列表:list 登录条:loginbar 提示信息:msg 注册:regsiter ...
Git经验总结
git常用命令 git init初始化本地仓库 git add .添加/删除(所有)文件到暂存区 git reset HEAD .重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。 git status查看git此时的状态 git commit -m 'message'提交到本地仓库 git remote add origin Address绑定远程仓库 git pull origin main/master拉取同步远程服务器代码,无冲突直接合并,有冲突需要手动合并 git push origin main/master推送至远程仓库 git log查看提交记录 git reflog操作记录(查看版本号) git reset --hard HEAD^/版本号回退上一个版本/某个版本(HEAD表示当前版本 ^表示上一个) git多人协作 git branch -a查看所有分支 git checkout -b aaa创建新的分支(-b)aaa git checkout aaa切换到aaa分支 git ...
vue-router钩子函数与执行流程
全局守卫前置守卫 beforeEach全局前置守卫,在路由跳转前触发,它在 每次导航 时都会触发。 router.beforeEach((to, from, next) => { console.log('to:', to); console.log('from:', from); next(); }) beforeEach 全局前置守卫接收三个参数: to: Route: 即将要进入的目标路由对象 from: Route: 当前导航正要离开的路由对象 next: Function: 一定要调用该方法不然会阻塞路由 next 参数可以不添加,但是一旦添加,则必须调用一次,否则路由跳转等会停止。 next()方法的几种情况 next(): 进行管道中的下一个钩子。 next(false): 中断当前的导航。回到 from 路由对应的地址。 next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址,可传递的参数与 ...
this指向
一、方法调用模式 当函数被保存为一个对象的属性时,它就可称为这个对象的方法。当一个方法被调用时,this被绑定到这个对象上。如果调用表达式包含一个提取属性的动作(. 或 []),那么它被称为方法调用。例如: var name = "window";var obj = { name: "TsingYi", sayName: function() { // 如果是箭头函数this就会指向window console.log(this.name); }};obj.sayName(); //TsingYi sayName函数作为对象obj的方法调用,所以函数体中的this就代表obj对象。 二、函数调用模式 当一个函数并非一个对象的属性时,那么它就是被当做函数来调用的。在此种模式下,this被绑定为全局对象,在浏览器环境下就是window对象。例如: var name = "window";function sayName() { ...