自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 阶段总结之—代码风格

最近接手了公司一个新的项目,在大概看了一遍代码之后觉得一些地方让我看着有点难受,而且没有太多注释,不利于理解,所以就对自己看到的一些可以更合理的地方进行了改动。再结合之前自己写过的一些不和规范的代码,一起来做个总结。1. 命名相关不论是对变量命名,还是函数命名,又或者文件命名都要做到语义化,争取就算不做注释别人也能一眼就看懂。在这个基础上,再做到简洁明了。缩写可以有,但是不要用一些自我...

2019-11-04 20:45:16 172

原创 Vue源码学习笔记之实现双向数据绑定(三)--- 总结

我们上一篇了解了vue源码对双向数据绑定的实现,这一篇做一下总结。>Observer角色:数据观察者作用:利用 Object.defineProperty 给每个值都添加getter和setter方法,使其可以对数据的所有属性进行监听,如有变动可以拿到最新的值并通知订阅者。get方法:添加相应依赖,如果Dep.target 存在,再判断这个watcher是否已经添加到了相关依...

2019-10-31 15:18:23 170

原创 Vue源码学习笔记之实现双向数据绑定(二)--- vue源码学习

我们在上一篇了解了发布-订阅模式的实现,这一篇总结下Vue是怎么利用发布-订阅模式来实现双向数据绑定的。1. Vue 构造函数的实现首先我们使用vue构造函数去实例化了一个vue实例。传入了props,data,watch,methods等属性。在实例化的过程中,Vue提供的构造函数就使用我们传入的options去完成数据的依赖管理,初始化的过程只有一次,但是数据的依赖管...

2019-10-25 15:24:24 460

原创 Vue源码学习笔记之实现双向数据绑定(一)--- 发布订阅模式

首先看下vue官方文档中对于响应式原理说明的配图:Vue.js 是采用 Object.defineProperty 的 getter 和 setter,并结合观察者模式来实现双向数据绑定的。当把一个普通 Js 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,通过用Object.defineProperty 设定对象属性的 setter/getter 方法来监听数...

2019-10-23 21:17:21 326

原创 css常用技巧整理

css控制单行或多行文本超出显示省略号1. 单行文本text-overflow: clip|ellipsis|string;clip:修剪文本。ellipsis:显示省略符号来代表被修剪的文本。string:使用给定的字符串来代表被修剪的文本(谷歌不生效)。p { font-size: 14px; max-width: 200px; /*需要配合宽度来使用*/...

2019-10-18 19:02:28 294

原创 lodash常用方法结合实际项目解析

_.merge(object, [sources])官方定义:该方法类似_.assign, 除了它递归合并sources来源对象自身和继承的可枚举属性到object目标对象。如果目标值存在,被解析为undefined的sources来源对象属性将被跳过。数组和普通对象会递归合并,其他对象和值会被直接分配覆盖。源对象从从左到右分配。后续的来源对象属性会覆盖之前分配的属性。参...

2019-10-16 20:14:13 493

原创 js原型笔记

目录1.new 的过程2. __proto__属性3.prototype属性4.constructor属性5. 原型继承new的过程function Foo() {...};let f1 = new Foo();上面代码首先创建一个构造函数Foo(),并用new操作符来生成了一个实例对象f1。new 会劫持所有普通函数并用构造对象的形式来调用它。...

2019-09-17 15:06:08 266

原创 详解构造函数模式

前言:虽然ECMAScript从技术上讲是一门面向对象的语言,但是它不具备传统的面向对象语言所支持的类和接口等基本结构。但在ES5中,有与类相似的引用类型。引用类型描述一类对象所具有的属性和方法,引用类型的值(对象)是引用类型的一个实例,所以也被称为对象定义。新对象是使用new 操作符后跟一个构造函数来创建的。ES5提供了多种原生引用类型(如Object, Array,Date, Function...

2018-03-06 15:39:03 392

原创 CSS知识点总结之——display:inline-block

CSS知识点总结之——display:inline-block如果我们想让两个div能够在一行显示,一般有下面两种方法:  1. 为两个div均添加display:line-block属性; 2. 将两个div都设成浮动的元素 ;但是这两种方法在实现时是有一定差别的:原始代码如下:Document*

2018-01-25 16:58:02 617

原创 css知识点总结之——实现居中布局

css实现居中布局水平居中:      块级元素:设置宽度且设置margin:0 auto;      行内元素:设置text-align: center;垂直居中 :      行内元素:设置 line-height 和 height 相等      块级元素:父元素设置相对布局              已知高度:子元素设置绝

2018-01-25 16:45:05 186

原创 ES6入门之let 和 const 命令

let 命令ES6 新增了let命令,用来声明变量。它的用法类似于var,但是有以下几个主要的区别:1. let声明的变量,只在let命令所在的代码块内有效。如:{ let a = 1; var b = 2;}a // ReferenceError: a is not defined.b // 2let实际上为 JavaScript 新增了块级作用域。如:function f() ...

2018-01-23 17:41:21 161

原创 for循环,定时器与闭包

首先来看一个常见的问题:for (var i=1; i<=5; i++) { setTimeout( function timer() { console.log( i ); }, i*1000 );}正常情况下,我们期望这段代码以每秒一个的频率分别输出数字1~5。但实际上,这段代码在运行时会以每秒一次的频率输出五次6。那问题来了,为什么以每秒一次的频率输出五次

2018-01-23 14:33:51 874 1

原创 JS实现五种经典排序算法

冒泡排序实现思想:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。代码:var arr=[47,36,39,3,1,2,4

2018-01-22 14:09:30 679

原创 css经典布局

一、左侧固定宽度右侧宽度自适应布局实现方法一:float+overflow:hidden主要思路:左侧盒子设置float:left。右侧盒子设置overflow:hidden,使其不与浮动盒子区域重叠。HTML代码如下:左侧固宽,右侧自适应 左侧固宽 右侧自适应宽度右侧自适应宽度右侧自适应宽度右侧自适应宽度右侧自适应宽度右侧自适应宽度右侧自适应

2018-01-10 19:46:23 234

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除