曾经我一度在寻找JS的替代语言,尝试过CoffeeScript/TypeScript/Dart(都是浅尝)。不为什么原因,而是当你写的越多的JS,越觉得JS很多时候显得很操蛋。好在ES2015Babel出来了,也让我终止了寻找替代方案,安心的停留在了JavaScript本身。

我并没有非常丰厚的多语言编程经验,但也有一丝想法,对于JavaScript来说。

Array增加firstlast方法
let arr = [1, 2, 3];
arr.first(); //1
arr.last(); //3

当然用arr[0]arr[arr.length-1]也能够实现相同的效果,不过方案显得不够优雅


[n...m]快速生成从nm的数字数组(可用于简洁的循环)
let arr = [0...9];
//等同于
let arr2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; [0...9].map(n => console.log(n));

提供快速检测对象属性是否存在的方法Object.isSet,这样就不必去做嵌套式的判断语句了,也不用担心抛出异常
let a = {};

if (Object.isSet(a.b.c.d)) {
//现在a.b.c.d能够安全的调用
} //现在只能这样判断.d能否被安全调用
if (a && a.b && a.b.c && a.b.c.d) {
//现在a.b.c.d能够被安全的调用
}

Date对象的toString方法提供输出指定格式的日期时间字符串
let d = new Date();

d.toString('yyyy-MM-dd'); //2016-01-01
//hh 12小时制 HH 24小时制
d.toString('hh:mm:ss'); //09:21:12
d.toString('HH:mm:ss'); //21:21:12

Date对象提供对年、月、日、分、秒的增减方法
let d = new Date();
//2016-01-01 09:20:20 d.years(1); //2017-01-01 09:20:20
d.years(-1); //2015-01-01 09:20:20 d.months(1); //2016-02-01 09:20:20
d.months(-1); //2015-12-01 09:20:20 d.days(1); //2016-01-02 09:20:20
d.days(-1); //2015-12-31 09:20:20 d.minutes(1); //2016-01-01 09:21:20
d.minutes(-1); //2016-01-01 09:19:20 d.seconds(1); //2016-01-01 09:20:21
d.seconds(-1); //2016-01-01 09:20:19

我认为JS还可以改进的点的更多相关文章

  1. ul+js模拟select+改进

    html: <div class="select_box"> <input type="text" value="还款方式" ...

  2. 使用Node.js还可以发邮件

    前言 今天,我们给大家开发一个小效果.篇幅比较短,主要给大家展示效果.实战 首先我们初始化一个Node项目 npm init -y 创建一个app.js文件 'use strict'; const n ...

  3. [ JS 进阶 ] 如何改进代码性能 (3)

    原文链接 总结一下 1.减少操作dom的次数 2.需要多次使用某全局变量的时候,将其赋给一个局部变量,避免重复查找 3.优化循环 4.多用逗号和直接赋值的方式来var,减少工厂方式和构造函数方式创建对 ...

  4. JS做的类似腾讯专题图片播放器,大家可以一起来改进!

    我是一个应届生,来公司不久,根据需求,网站需要一个专题图片轮播的页面.网上确实有很多现成的插件,但是,作为一个JS还不是很牛的应届生,我决定自己写一个! 话说忽然想到做个这个还真不容易,一时思绪理不清 ...

  5. Vue.js:轻量高效的前端组件化方案

    转发一篇尤老师对vue.js的介绍,了解vue.js的来龙去脉.不过现在已经是2.0了,也有添加一些新的东西,当然有些东西也改了. Vue.js:轻量高效的前端组件化方案 Vue.js 是我在2014 ...

  6. js模块化历程

    这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来.经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史. 无模块时代 在ajax还未提出 ...

  7. js 模块化历程

    作者:吕大豹 网址:http://www.cnblogs.com/lvdabao/p/js-modules-develop.html 这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生 ...

  8. Vue.js:轻量高效的前端组件化方案(转载)

    摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue ...

  9. Ext JS 5的声明式事件监听

    在前文<在Ext JS 5使用ViewControllers>中,简单的介绍了Ext JS 5的一项重要改进——声明式事件监听.在本文,将深度探讨如何使用声明式事件监听啦简化应用程序的视图 ...

随机推荐

  1. 常见CSS与HTML使用误区

       误区一.多div症 <div class="nav"> <ul> <li><a href="/home/"> ...

  2. HTML5 input元素新的特性

    在HTML5中,<input>元素增加了许多新的属性.方法及控件.本文章分别对这三方面进行介绍. 目录 1. 属性 2. 方法 3. 新控件 1. 属性 <input>元素在H ...

  3. 问题记录:EntityFramework 一对一关系映射

    EntityFramework 一对一关系映射有很多种,比如主键作为关联,配置比较简单,示例代码: public class Teacher { public int Id { get; set; } ...

  4. isEmpty和isNull()区别

     isEmpty和isNull()区别一个NULL字符串一定是一个空串,一个空串未必是一个NULL字符串例如:QString().isNull():   //结果为trueQString().isEm ...

  5. 信息安全-1:python之playfair密码算法详解[原创]

    转发注明出处: http://www.cnblogs.com/0zcl/p/6105825.html 一.基本概念 古典密码是基于字符替换的密码.加密技术有:Caesar(恺撒)密码.Vigenere ...

  6. HTML5 程序设计 - 使用HTML5 Canvas API

    请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...

  7. jsp

    -----------------

  8. 兼容Mono的下一代云环境Web开发框架ASP.NET vNext

    微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cl ...

  9. 【完全开源】知乎日报UWP版(下篇):商店APP、github源码、功能说明。Windows APP 良心出品。

    目录 说明 功能 截图+视频 关于源码和声明 说明 陆陆续续大概花了一个月的时间,APP算是基本完成了.12月份一直在外出差,在出差期间进行了两次功能完善,然后断断续续修补了一些bug,到目前为止,我 ...

  10. .Net深入实战系列—JSON序列化那点事儿

    序 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json).JavaScriptSerializer ...