关于ES6的六个小特性(二)


Posted in Javascript onFebruary 20, 2017

前言

Javascript 团体的每个人都喜欢新的API,语法更新以及特性,它们提供了更好的,更智能,更有效的方式以完成重要的任务。

继上一篇的 《简单谈谈ES6的六个小特性》,这次我再分享6个可以减少代码和最大化效率的方法。

1.Object Shorthand

新的对象声明方法允许我们可以不声明对象的 key :

var x = 12;
var y = yes;
var z = {one:'1',two:'2'};

// The old way
var obj = {
 x:x,
 y:y,
 z:z
}
// The new way
var obj = {x,y,z};

2.Method Properties

避免 function 关键字声明函数:

var davidwalsh = {
 makeItHappen(param){
 // do stuff
 }
}

必须承认去除掉 function 关键字确实使代码简洁、更好维护。

3.Blocks vs Immediately Executed Functions

下面创建立即执行方法的模式有点难看:

(function(){
 // do stuff
})();

通过ES6我们可以通过 {} 和 let 来创建块级作用于,完成立即执行函数的作用:

{
 let j = 12;
 let divs = document.querySelectorAll('div');

 // do stuff
}

j; // ReferenceError: j is not defined...

如果在 Block 内部声明函数,它将会被外部访问到。但你如果使用 let 关键字声明函数自变量,将不使用括号的情况下实现 IEF 的功能。

4. for loops and let

因为在JS里面会存在变量提升,我们经常会在作用域前面声明一些”无用”的迭代变量,例如(for var x = …)。ES6 使用 let 解决了此恼人的问题:

for(let x = 0; x < len; i++){
 //do stuff
}

x; // ReferenceError: x is not defined

不久以后 let 会被应用的更多。

5.get and set for Classes

class Cart{
 constructor(total){
 this._total = total;
 }
 get total(){return this._total;}
 set total(v){this._total = Number(v);}
}

var cart = new Cart(100);

cart.total // 100

能为属性设置 get、set 是这部分最棒的。不需要使用函数来进行特殊的设定?当执行 obj.prop = {value} 时,一切都会自动执行。

6.startsWith,endsWith and includes

"MooTools".startsWith("Moo"); // true;
"MooTools".startsWith("moo"); // false;

"MooTools".endsWith("Tools"); // true;

"MooTools".includes("oo"); // true;

注:includes 方法兼容性还是很多,曾有一个线上bug,就是因为不支持此方法导致的。

原文:https://davidwalsh.name/es6-features-ii/amp

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
js切换div css注意的细节
Dec 10 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
May 01 Javascript
谈谈impress.js初步理解
Sep 09 Javascript
Angularjs中UI Router的使用方法
May 14 Javascript
深入理解js generator数据类型
Aug 16 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
Jan 03 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
Aug 16 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
Nov 21 Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 Javascript
JavaScript TAB栏切换效果的示例
Nov 05 Javascript
vue特效之翻牌动画
Apr 20 Vue.js
JavaScript 总结几个提高性能知识点(推荐)
Feb 20 #Javascript
JS批量替换内容中关键词为超链接
Feb 20 #Javascript
网页中右键功能的实现方法之contextMenu的使用
Feb 20 #Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 #Javascript
Angular.js跨controller实现参数传递的两种方法
Feb 20 #Javascript
Bootstrap table右键功能实现方法
Feb 20 #Javascript
BootstrapTable refresh 方法使用实例简单介绍
Feb 20 #Javascript
You might like
PHP产生随机字符串函数
2006/12/06 PHP
thinkphp控制器调度使用示例
2014/02/24 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
php多线程并发实现方法
2016/09/30 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
Python列表推导式的使用方法
2013/11/21 Python
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
Python出现segfault错误解决方法
2016/04/16 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
python getopt模块使用实例解析
2019/12/18 Python
Tensorflow累加的实现案例
2020/02/05 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
信息技术专业个人自我评价
2013/12/11 职场文书
高中毕业自我鉴定
2013/12/16 职场文书
公司薪酬管理制度
2014/01/31 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
谢师宴家长致辞
2015/07/27 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js