1. Brief ES6(ECMAScript 6th edition)于2015年7月份发布,虽然各大浏览器仍未全面支持ES6,但我们可以在后端通过Node.js 0.12和io.js,而前端则通过Traceur或Babel这类Transpiler将ES6语法预转译为ES5语法,来提前兴奋一把.而仅需适配IE9+的朋友们现在更是可以开始撸ES6了,而不必为学哪门JavaScript超集语言而烦恼.(ES6又名为ECMAScript 2015或JavaScript.next,ES4的部分较为激进…
tagged template: 加在模板字符串前面加一个标签(函数). let dessert = = '甜品' drink = '茶' let breakfast = kitchen`今天的早餐是${dessert} 与 ${drink}!` function kitchen(strings,...values){ console.log(strings); console.log(values); } strings和value都是数组,里面分别是string和value:…
摘要:新一代JavaScript标准,ES6即将发布.[探秘ES6]系列专栏将一一剖析ES6的诸多新特性,让Web开发者对此有清晰全面的了解.本文为系列的第一篇,带你了解ES6到底是什么以及有哪些令人期待的地方. ES6作为新一代JavaScript标准,即将与广大前端开发者见面.为了让大家对ES6的诸多新特性有更深入的了解,Mozilla Web开发者博客推出了<ES6 In Depth>系列文章.CSDN已获授权,将持续对该系列进行翻译,组织成[探秘ES6]系列专栏,供大家学习借鉴.本文为…
23种子GOF设计模式一般分为三类:创建模式.结构模型.行为模式. 创建模式抽象的实例.怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化托付给还有一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些详细的类的信息封装起来.第二,它们隐藏了这些类的实例是怎样被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此.创建型模式在什么被创建,谁创建它,它是怎样被创建的.以及何时创建这些方面给予了非常大的…
错误信息:Exception processing template “/view/df”: Error resolving template “/view/df”, template might not exist or might not be accessible by any of the configured Template Resolversorg.thymeleaf.exceptions.TemplateInputException: Error resolving templa…
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "/home/index2", template might not exist or might not be accessible by any of the configured Template Resolvers    at org.thymeleaf.TemplateRepository.getTemplate(Template…
html模板生成: html/template包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出.它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用text/template包. 模板语法 {{.}} 模板语法都包含在{{和}}中间,其中{{.}}中的点表示当前对象. 当我们传入一个结构体对象时,我们可以根据.来访问结构体的对应字段.例如: // main.go func sayHello(w http.ResponseWriter, r *ht…
模板方法模式需要开发抽象类和具体子类之间的协作.抽象类负责给出一个算法的轮廓和骨架,子类则负责给出这个算法的各个逻辑步骤.代表这些具体逻辑步骤的方法称做基本方法(primitive method):而将这些基本方法汇总起来的方法叫做模板方法(template method).子类重写抽象类中的抽象方法,通过调用抽象类中的模板方法中的抽象方法,实现对子类基本方法的调用. 直接来看一个例子: 1.定义一个抽象类,及类中的模板方法和抽象方法: abstract class AbstractCalcul…
ES6,即ECMAScript 6.0,ES6的第一个版本是在2015年发布的,所以又称作ECMAScript 2015 如今距ES6发布已经一年多的时间,这时候才去学,作为一个JSer,羞愧羞愧,还是尽早去学习吧 主要参照阮一峰的 ES6标准入门 及其他资料,系统地学习ES6,好记星不如烂笔头,记录一下成文 以下为系列文章 ES6笔记(1)-- 环境配置支持  ES6笔记(2)-- let的块级作用域  ES6笔记(3)-- 解构赋值  ES6笔记(4)-- Symbol类型  ES6笔记(5…
0.导言 最近从coffee切换到js,代码量一下子变大了不少,也多了些许陌生感.为了在JS代码中,更合理的使用ES6的新特性,特在此对ES6的特性做一个简单的总览. 1.模块(Module) --Chrome测试不可用 在ES6中,有class的概念,不过这只是语法糖,并没有解决模块化问题.Module功能则是为了解决模块化问题而提出的. 我们可以使用如下方式定义模块: 11_lib.js文件内容 // 导出属性和方法 export var PI = 3.1415926; export fun…
strings.Builder 源码解析. 存在意义. 实现原理. 常用方法. 写入方法. 扩容方法. String() 方法. 禁止复制. 线程不安全. io.Writer 接口. 代码. strings.Join 源码解析. 实现原理. 代码…
相关阅读 Index Templates https://www.elastic.co/guide/en/elasticsearch/reference/7.1/indices-templates.html Dynamic Template https://www.elastic.co/guide/en/elasticsearch/reference/7.1/dynamic-mapping.html GET _cat/templates GET /_template/* PUT _templat…
0.导言 ES6中新增了不少的新特性,来点测试题热热身.具体题目来源请看:http://perfectionkills.com/javascript-quiz-es6/. 以下将一题一题来解析what和why. 1.题目一 (function(x, f = () => x) { var x; var y = x; x = 2; return [x, y, f()]; })(1) A. [2, 1, 1] B. [2, undefined, 1] C. [2, 1, 2] D. [2, undef…
1.let命令 Tips: 块级作用域(只在当前块中有效) 不会变量提升(必须先申明在使用) 让变量独占该块,不再受外部影响 不允许重复声明 总之:let更像我们熟知的静态语言的的变量声明指令 ES6新增了let命令,用来声明变量.用法类似于var,但所声明的变量,只能在let命令所在的代码块内有效. let声明的变量只有块级作用域 'use strict' { let a = 1; } console.log(a); //结果是什么? 看一段熟悉的代码: var a = []; for (va…
1函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello World 上面代码检查函数log的参数y有没有赋值,如果没有,则指定默认值为World.这种写法的…
let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = ; ; } a // ReferenceError: a is not defined. b 上面代码在代码块之中,分别用let和var声明了两个变量.然后在代码块之外调用这两个变量,结果let声明的变量报错,var 声明的变量返回了正确的值.这表明,let 声明的变量只在它所在的代码块有效. for循环的计数器,就很合适使用let命令. ;…
es6中关于Number类型的变化,主要有以下几点 Number.isInteger(新增,判断是否为整数) Number.EPSILON(新增,判断是否可忽略的误差) Number.MAX_SAFE_INTEGER(新增,可以在js中安全且精确地表示的最大整数) Number.MIN_SAFE_INTEGER(新增,可以在js中安全且精确地表示的最小整数) Number.isSafeInteger(新增,表示在js中安全整数范围内,即是在-(253 - 1) 到 (253 - 1)之间) Nu…
Array.from() 用于将两类对象转为真正的数组,类似数组对象和可遍历对象(包括数据结构Set和Map)转化为数组 格式:Array.from(arrayLike[, mapFn[, thisArg]]) // 字符串 Array.from('foo'); // ["f", "o", "o"] // Set结构,类似数组,是个集合,具有add,has,delete,clear等方法,后面详细说 var s = new Set(['foo',…
1 for...of 字符串的遍历接口 for(let i of "abc"){ console.log(i); } // a // b // c 2 includes 是否包含某字符串,返回布尔值 格式:str.includes(searchString[, position]) 与indexOf的对比: indexOf:返回下标,判断是否包含某字符串,下标是字符串的位置 includes:返回布尔值,是否包含某字符串,如果只是判断字符串中包含,此法可行. var s = "…
解构就是ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值(只能用于数组,对象或迭代器).如果解构不成功,则等于undefined,但不能赋值为undefined和null,因为undefined和null不属于数组或对象 1 数组的解构赋值 数组的解构赋值就是,按照数组元素的次序,取出它位置所对应的值,具体如下 var [a, b, c] = [1, 2, 3]; // a=1;b=2;c=3 相当于var a=1, b=2, c=3; // 也可以用于let,const声明变量 l…
ES6 在 Number对象上新增了很多方法 1 .    Number.isFinite()判断是否为有限的数字 和全局的isFinite() 方法的区别是 isFinite('1') === true    ;    Number.isFinite('1') === false 全局的isFinite()先调用Number() 方法  把  变量 转化为数字再进行判断, 所以返回 true, Number.isFinite()只能判断数字, 对于非数字一律返回false 2  ,  Numb…
1.如何搭建ES6的webpack开发环境? 安装Node环境 node -v // 10.14.1 安装NPM环境 npm -v // 6.4.1 安装babel npm install @babel/core babel-preset-es2015 babel-preset-latest 创建.babelrc文件 npm install babel-cli -g babel --version babel ./src/index.js // 测试babel的编译结构 Webpack---模块…
Reflect   是ES6 为了操作对象而提供的新的API, 目的是: 将Object 上一些明显属于语言内部的方法,比如 Object.defineProperty  放到 Reflect对象上 现阶段某些方法同时在Object  ,  Reflect 上部署,  未来的新方法将只在Reflect对象上部署,也就是说 从Reflect对象上可以获得语言内部的方法. 2. 修改某些Object 方法的返回结果,让其变得更合理.   3.让Object的操作都变成函数行为.某些Object操作是…
工作中遍历对象是家常便饭了,遍历数组的方法五花八门, 然而很多小伙伴是不是和我之前一样只会用for ...in.... 来遍历对象呢, 今天给大家介绍五种遍历对象属性的方法: 1, 最常用的for  in 它可以便利对象本身及其继承自原型上的可枚举属性, 过滤掉原型上的属性可以用hasOwnProperty(属性名)来判断是否是本身的属性, 对象的每一个属性都有它的描述,可以用Object.getOwnPropertyDescriptors(对象, 属性名)来查看对象的某个属性的描述,可以知道其…
要学好javascript , ECMAScript标准比什么都强, ESMAScript标准已经用最严谨的语言和最完美的角度展现了语言的实质和特性. 理解语言的本质后,你已经从沙堆里挑出了珍珠,能经得起时光的磨砺. 有很多问题在网络上被包装了太多次,解释的千奇百怪,但用规范的语言来描述竟是如此简单. 什么是ES6, 刚开始学ES6的时候我以为它就是ECMAScript2015, 然而ES6是一个泛指, 它是指5.1版本后JavaScript的下一代标准, 它涵盖了ES2015, ES2016,…
let 声明变量,可以说是具有作用域的var,用于声明变量,主要规则如下: 1 let声明的变量拥有块级作用域 { let i = 1; console.log(i); // 1 } console.log(i); // Uncaught ReferenceError: i is not defined 2 同一作用域,let变量应先声明再调用,同时不能重复声明 { console.log(t1); // undefined var t1 = "var声明的变量"; console.l…
观察者模式是指函数自动观察数据对象的变化, 一旦对象有变化,函数就会自动执行. 它定义了一种一对多的依赖关系,我们用Proxy来实现一个简单的观察者模式(PS: 初学我们认为 观察者模式 == 发布订阅模式, 其实它们有点不同). 例子: const callbacks = new Set();const observe = fn => callbacks.add(fn);const observable = obj => new Proxy(obj, {set}); function set…
由来 推荐在这里阅读 js操作二进制数据三兄弟 ArrayBuffer对象, TypeArray视图和DataView视图 它们都以数组的语法处理二进制数据,所以统称为二进制数组 ::: tip 二进制数组并不是真正的数组,而是类似数组的对象 ::: 设计的目的 与WebGL项目有关,WebGL是浏览器和显卡之间的通信接口, 利用二进制数据通信可以大大提升脚本性能 概念 ArrayBuffer: 原始的二进制数据 TypeArray: 用于读写简单类型的二进制数据 DataView: 用于读写复…
递归我们不陌生, 那什么是尾递归呢? 为什么要用尾递归呢? 尾递归怎么用呢? 带着这三个问题我们来了解它, 我们知道递归非常耗费内存,一不小心就会发生‘栈溢出’, 相信你一定遇到过这个错误: stack overflow, 尾递归就是用来优化递归的这个问题的. 尾递归的定义: 在函数的最后一步返回自身,也就是显示地return自身就称为尾递归.对于尾递归来说, 由于只存在一个调用帧,所以永远不会发生‘栈溢出’. 我们来举例说明尾递归的好处: 比如计算n的阶乘, 我们首先想到找规律, n的阶乘等于…
ES6 & tagged-template-literals & template strings tagged template https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#Tagged_templates demo https://wesbos.com/tagged-template-literals/ function highlight(strings, ..…