transform属性
用于2d、3d转换,允许元素旋转、缩放、移动、倾斜,扭曲、矩阵
transform: rotate | scale | skew | translate |matrix;
roate:旋转角度 transform:roate(30deg)
translate:移动 transform:translate(-50%,-50%)x,y
scale:缩放 transform:scale(2,1.5)x,y
transition: property duration timing-function delay
transition属性是个复合属性,她包括以下几个子属性:
- transition-property :规定设置过渡效果的css属性名称
- transition-duration :规定完成过渡效果需要多少秒或毫秒
- transition-timing-function :指定过渡函数,规定速度效果的速度曲线
- transition-delay :指定开始出现的延迟时间
v-for中key的作用
对于用v-for渲染的列表数据来说,如果整个重新渲染太浪费资源。使用就地复用策略,列表数据修改的时候,根据key值来判断是否修改,重新渲染修改的元素 。
- es6新特性
- 新增symbol类型 表示独一无二的值,用来定义独一无二的对象属性名;
- const/let 都是用来声明变量,不可重复声明,具有块级作用域。存在暂时性死区,也就是不存在变量提升。(const一般用于声明常量);
- 变量的解构赋值(包含数组、对象、字符串、数字及布尔值,函数参数),剩余运算符(...rest);
- 模板字符串(
${data}
); - 扩展运算符(数组、对象);;
- 箭头函数;
- Set和Map数据结构;
- Proxy/Reflect;
- Promise;
- async函数;
- Class;
- Module语法(import/export)。
扩建芥末堡艺术
js对象创建七种方式(冻足够员工)
- 工厂模式(函数内创对象,不用new)
-
function Person() { var o = new Object(); o.name = 'hanmeimei'; o.say = function() { alert(this.name); } return o; } var person1 = Person();
- 无法通过constructor识别对象,以为都是来自Object,无法得知来自Person
- 每次通过Person创建对象的时候,所有的say方法都是一样的,但是却存储了多次,浪费资源。
-
- 字面量对象
-
const obj = { name: 'dz', age: 23 }
-
- 构造函数模式(创建函数,this.)
-
function Person() { this.name = 'hanmeimei'; this.say = function() { alert(this.name) } } var person1 = new Person();
- 通过constructor或者instanceof可以识别对象实例的类别
- 可以通过new 关键字来创建对象实例,更像OO语言中创建对象实例
-
- 原型模式(创建函数,给函数原型上加东西)
-
function Person() {} Person.prototype.name = 'hanmeimei'; Person.prototype.say = function() { alert(this.name); } Person.prototype.friends = ['lilei']; var person1 = new Person();
-
- 构造函数和原型组合模式
-
function Person(name) { this.name = name this.friends = ['lilei'] } Person.prototype.say = function() { console.log(this.name) } var person1 = new Person('hanmeimei') person1.say() //hanmeimei
-
- 动态原型模式(加个条件判断)
-
function Person(name) { this.name = name if(typeof this.say != 'function') { Person.prototype.say = function( alert(this.name) } }
-
- 寄生构造模式
- 稳妥构造模式