关于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 相关文章推荐
jquery验证手机号码、邮箱格式是否正确示例代码
Jul 28 Javascript
js 去除字符串第一位逗号的方法
Jun 07 Javascript
使用js实现数据格式化
Dec 03 Javascript
14个有用的Jquery技巧分享
Jan 08 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
深入剖析JavaScript中的函数currying柯里化
Apr 29 Javascript
js点击任意区域弹出层消失实现代码
Dec 27 Javascript
vue组件中使用iframe元素的示例代码
Dec 13 Javascript
微信小程序slider组件使用详解
Jan 31 Javascript
iview的table组件自带的过滤器实现
Jul 12 Javascript
原生js实现无缝轮播图
Jan 11 Javascript
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上传文件中文文件名乱码的解决方法
2013/11/01 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
php实现文件编码批量转换
2014/03/10 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
菜单效果
2006/10/14 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
浅谈python中的变量默认是什么类型
2016/09/11 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
python自动化报告的输出用例详解
2018/05/30 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
python统计中文字符数量的两种方法
2019/01/31 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
人力资源管理毕业生自荐信
2013/11/21 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
大学生团日活动总结
2015/05/06 职场文书
2015年中秋寄语
2015/07/31 职场文书
小学数学教师研修日志
2015/11/13 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python
Moment的feature导致线上bug解决分析
2022/09/23 Javascript