【人生苦短我学Vue】-【DAY02】-计算属性,ES6补充,事件监听
大家好,我是被白菜拱的猪。
一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy!
文章目录
一、计算属性
3-计算属性的getter和setter方法
在计算属性中,fullName这个属性里面有get和set方法,但是set方法不常用,所以我们直接简写成fullName()
4-计算属性与methods的对比
计算属性有缓存,假如调用多次一样的方法时,只执行一次。
methods里面的方法是调用一次执行一次。所以占据的内存比计算属性大。
所以假如多次执行不变的方法时,我们使用计算属性,假如内容经常改变的,我们使用methods。
二、ES6补充
先讲讲什么是ES,以及ES,JavaScript,TypeScript的关系
ECMA Script
它是一种由ECMA组织(前身为欧洲计算机制造商协会)制定和发布的脚本语言规范
而我们学的JavaScript是ECMA的实现, 但术语ECMAScript和JavaScript平时表达同一个意思。
ECMAScript和JavaScript的关系
由于JavaScript的创造者Netscae公司的版权问题,ECMAScript不能叫Javascript。总之,ECMAScript和JavaScript的关系是,前者是后者的规格(语言规范),后者是前者的一种实现。
JavaScript 与 TypeScript 的关系
TypeScript是Javascript的超集,实现以面向对象编程的方式使用Javascript。当然最后代码还是编译为Javascript。
1-块级作用域
在ES5中 我们尝试使用var,这其实是一直缺陷,ES5是块作用域这一说的,只有函数有作用域,这就导致会出现很多问题,比如使用If,和for循环的时候就出错乱。
下面举个例子,给五个按钮绑定事件,你点击一个按钮,控制台会显示点击哪一个按钮。
你会发现点击第一个按钮的时候,显示的是 你点击了第五个按钮。这是因为ES5没有块级作用域导致的,每个函数共用了一个变量i。i最后变成5的时候,每个按钮绑定的事件的i都变成了5,相当于i是全局变量。
所以引入了let关键字,每一次绑定的i都是自己的,不会因为别人的i改变而改变。
ES5的var是没有作用域的(if/for)
ES6的let是有作用域的(if/for)
另外ES5使用闭包也可以解决这个问题
2-const的使用
跟c/c++一样,const修饰的是常量,不可以被改变。而且声明式必须初始化,保证了数据的安全性。
建议:在ES6开发过程中,优先使用const。只有标识符被改变的时候才使用let。注意const,let是在ES6中新出现的。
注意:
常量的含义是指向的对象不能修改,但可以修改对象的属性。
对象在内存里面有一个内存地址,变量保存的是对象的内存地址。内存地址不可以改变,但是值可以改。
3-对象字面量的增强写法
(1)属性的增强写法
(2)函数的增强写法
三、事件监听
1-v-on的基本使用
这里就贴上上一篇的代码,按钮点击增加数字。
v-on的语法糖写法@
2-v-on的参数问题
关于括号加不加的问题,括号可不加的两个条件是
1.是在事件监听的时候,假如在mustache语法时,括号得要加。
2.函数没有参数的时候。
关于事件参数问题下面进行具体的演示
- 事件调用的方法没有参数
- 在方法定义的时候有参数,调用的时候有括号
如果函数需要参数,但是没有传入,那么函数的形参为undefined
-
在方法定义的时候有参数,调用的时候连括号都没有
这时候Vue会默认将将浏览器产生的event事件对象作为参数传入到方法中。 -
需要event的同时仍需要其他参数
如何手动调用event对象-$event
四、结束语
学而不思则罔,思而不学则殆。