关于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 网页水印(非图片水印)实现代码
Mar 01 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
Jun 13 Javascript
基于jquery的无刷新分页技术
Jun 11 Javascript
关于div自适应高度/左右高度自适应一致的js代码
Mar 22 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
浅析node.js中close事件
Nov 26 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
Aug 05 Javascript
Vue调试神器vue-devtools安装方法
Dec 12 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
Oct 30 Javascript
layui 解决富文本框form表单提交为空的问题
Oct 26 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
简单了解three.js 着色器材质
Aug 03 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实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
php下目前为目最全的CURL中文说明
2010/08/01 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
深入解析php中的foreach问题
2013/06/30 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
详解json在php中的应用
2018/09/30 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
python修改注册表终止360进程实例
2014/10/13 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
Django接收post前端返回的json格式数据代码实现
2019/07/31 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
Python bisect模块原理及常见实例
2020/06/17 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
工业学校毕业生自荐信范文
2014/01/03 职场文书
经典广告词大全
2014/03/14 职场文书
药品营销策划方案
2014/06/15 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
早安问候语大全
2015/11/10 职场文书
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL