关于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 相关文章推荐
javascript上传图片前预览图片兼容大多数浏览器
Oct 25 Javascript
jquery实现弹出窗口效果的实例代码
Nov 28 Javascript
jQuery Raty 一款不错的星级评分插件
Aug 24 Javascript
JavaScript实现替换字符串中最后一个字符的方法
Mar 07 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
Mar 17 Javascript
详解Node.js access_token的获取、存储及更新
Jun 20 Javascript
js实现图片上传预览原理分析
Jul 13 Javascript
vue组件间通信子与父详解(二)
Nov 07 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
用Node写一条配置环境的指令
Nov 14 Javascript
JS实现简易留言板增删功能
Feb 08 Javascript
详解JS ES6编码规范
May 07 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常用技术文之文件操作和目录操作总结
2014/09/27 PHP
php判断表是否存在的方法
2015/06/18 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
python模仿网页版微信发送消息功能
2018/02/24 Python
查看django版本的方法分享
2018/05/14 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
Python小进度条显示代码
2019/03/05 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
Sql面试题
2013/03/20 面试题
我为党旗添光彩演讲稿
2014/09/10 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
建议书范文
2015/02/05 职场文书
配置nginx 重定向到系统维护页面
2021/06/08 Servers