ES6 入门系列 ArrayBuffer】的更多相关文章

由来 推荐在这里阅读 js操作二进制数据三兄弟 ArrayBuffer对象, TypeArray视图和DataView视图 它们都以数组的语法处理二进制数据,所以统称为二进制数组 ::: tip 二进制数组并不是真正的数组,而是类似数组的对象 ::: 设计的目的 与WebGL项目有关,WebGL是浏览器和显卡之间的通信接口, 利用二进制数据通信可以大大提升脚本性能 概念 ArrayBuffer: 原始的二进制数据 TypeArray: 用于读写简单类型的二进制数据 DataView: 用于读写复…
0.导言 最近从coffee切换到js,代码量一下子变大了不少,也多了些许陌生感.为了在JS代码中,更合理的使用ES6的新特性,特在此对ES6的特性做一个简单的总览. 1.模块(Module) --Chrome测试不可用 在ES6中,有class的概念,不过这只是语法糖,并没有解决模块化问题.Module功能则是为了解决模块化问题而提出的. 我们可以使用如下方式定义模块: 11_lib.js文件内容 // 导出属性和方法 export var PI = 3.1415926; export fun…
要学好javascript , ECMAScript标准比什么都强, ESMAScript标准已经用最严谨的语言和最完美的角度展现了语言的实质和特性. 理解语言的本质后,你已经从沙堆里挑出了珍珠,能经得起时光的磨砺. 有很多问题在网络上被包装了太多次,解释的千奇百怪,但用规范的语言来描述竟是如此简单. 什么是ES6, 刚开始学ES6的时候我以为它就是ECMAScript2015, 然而ES6是一个泛指, 它是指5.1版本后JavaScript的下一代标准, 它涵盖了ES2015, ES2016,…
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对象上新增了很多方法 1 .    Number.isFinite()判断是否为有限的数字 和全局的isFinite() 方法的区别是 isFinite('1') === true    ;    Number.isFinite('1') === false 全局的isFinite()先调用Number() 方法  把  变量 转化为数字再进行判断, 所以返回 true, Number.isFinite()只能判断数字, 对于非数字一律返回false 2  ,  Numb…
Reflect   是ES6 为了操作对象而提供的新的API, 目的是: 将Object 上一些明显属于语言内部的方法,比如 Object.defineProperty  放到 Reflect对象上 现阶段某些方法同时在Object  ,  Reflect 上部署,  未来的新方法将只在Reflect对象上部署,也就是说 从Reflect对象上可以获得语言内部的方法. 2. 修改某些Object 方法的返回结果,让其变得更合理.   3.让Object的操作都变成函数行为.某些Object操作是…
工作中遍历对象是家常便饭了,遍历数组的方法五花八门, 然而很多小伙伴是不是和我之前一样只会用for ...in.... 来遍历对象呢, 今天给大家介绍五种遍历对象属性的方法: 1, 最常用的for  in 它可以便利对象本身及其继承自原型上的可枚举属性, 过滤掉原型上的属性可以用hasOwnProperty(属性名)来判断是否是本身的属性, 对象的每一个属性都有它的描述,可以用Object.getOwnPropertyDescriptors(对象, 属性名)来查看对象的某个属性的描述,可以知道其…
观察者模式是指函数自动观察数据对象的变化, 一旦对象有变化,函数就会自动执行. 它定义了一种一对多的依赖关系,我们用Proxy来实现一个简单的观察者模式(PS: 初学我们认为 观察者模式 == 发布订阅模式, 其实它们有点不同). 例子: const callbacks = new Set();const observe = fn => callbacks.add(fn);const observable = obj => new Proxy(obj, {set}); function set…
递归我们不陌生, 那什么是尾递归呢? 为什么要用尾递归呢? 尾递归怎么用呢? 带着这三个问题我们来了解它, 我们知道递归非常耗费内存,一不小心就会发生‘栈溢出’, 相信你一定遇到过这个错误: stack overflow, 尾递归就是用来优化递归的这个问题的. 尾递归的定义: 在函数的最后一步返回自身,也就是显示地return自身就称为尾递归.对于尾递归来说, 由于只存在一个调用帧,所以永远不会发生‘栈溢出’. 我们来举例说明尾递归的好处: 比如计算n的阶乘, 我们首先想到找规律, n的阶乘等于…
其他章节请看: es6 快速入门 系列 变量声明:let和const 试图解决的问题 经典的 var 声明让人迷惑 function demo1(v){ if(v){ var color='red' } console.log(color) } demo(1) // red js引擎会将上面的 demo1 函数修改成下面的样子: function demo2(v){ var color; if(v){ color='red' } ... } 解决方法 将 var 声明改为 let 声明 func…
其他章节请看: es6 快速入门 系列 Promise Promise 是一种异步编程的选择 初步认识Promise 用 Promise 来实现这样一个功能:发送一个 ajax,返回后输出 json 数据.请看示例: const promise1 = new Promise((resolve, reject) => { setTimeout(() => { let json = {success: true, data:{}} resolve(json); }, 3000); }); cons…
其他章节请看: es6 快速入门 系列 async 前文我们已经知道 promise 是一种异步编程的选择.而 async 是一种用于执行异步任务更简单的语法. Tip:建议学完 Promise 在看本文. async 函数 async 函数是使用 async 关键字声明的函数.就像这样: async function fa(){ } async 函数可以看作由多个异步操作包装成的一个 Promise 对象. async 函数返回 Promise async 函数总是返回一个 Promise 对…
其他章节请看: es6 快速入门 系列 类 类(class)是 javascript 新特性的一个重要组成部分,这一特性提供了一种更简洁的语法和更好的功能,可以让你通过一个安全.一致的方式来自定义对象类型. 试图解决的问题 es5 及早期版本中没有类的概念,通常会编写类似下面这样的代码来自定义类: // 自定义类的思路是:首先创建一个构造函数,然后定义一个方法并赋值给构造函数的原型 function Rectangle(length, width){ this.length = length;…
其他章节请看: es6 快速入门 系列 对象 试图解决的问题 写法繁杂 属性初始值需要重复写 function createPeople(name, age){ // name 和 age 都写了 2 次 return { name: name, age: age } } 对象中的方法有更简单的写法吗? let person = { name: 'aaron', sayName: function(){ } } 原型访问困难 要记得如何使用 Object.getPrototypeOf() 方法和…
Vue官网: https://cn.vuejs.org/v2/guide/forms.html#基础用法 [入门系列] (一)  http://www.cnblogs.com/gdsblog/p/7804785.html (二)   http://www.cnblogs.com/gdsblog/p/7804770.html (三)   http://www.cnblogs.com/gdsblog/p/7804758.html (四) http://www.cnblogs.com/gdsblog/…
其他章节请看: vue 快速入门 系列 侦测数据的变化 - [基本实现] 在 初步认识 vue 这篇文章的 hello-world 示例中,我们通过修改数据(app.seen = false),页面中的一行文本(现在你看到我了)就不见了. 这里涉及到 Vue 一个重要特性:响应式系统.数据模型只是普通的 JavaScript 对象,当我们修改时,视图会被更新.而变化侦测是响应式系统的核心. Object的变化侦测 下面我们就来模拟侦测数据变化的逻辑. 强调一下我们要做的事情:数据变化,通知到外界…
其他章节请看: vue 快速入门 系列 vue loader 上 通过前面"webpack 系列"的学习,我们知道如何用 webpack 实现一个不成熟的脚手架,比如提供开发环境和生成环境,开发环境提供本地服务器,有热模块替换,能使用 sass.es6等开发项目. 实际工作中我们可能会使用声明式框架 vue 或 react 来开发项目,而它们都提供了相应的脚手架.在学习 vue-cli(vue官方的脚手架)之前,我们先来玩一下 vue loader. Tip:本篇也可以称之为"…
其他章节请看: webpack 快速入门 系列 性能 本篇主要介绍 webpack 中的一些常用性能,包括热模块替换.source map.oneOf.缓存.tree shaking.代码分割.懒加载.渐进式网络应用程序.多进程打包.外部扩展(externals)和动态链接(dll). 准备本篇的环境 虽然可以仅展示核心代码,但笔者认为在一个完整的环境中边看边做,举一反三,效果更佳. 这里的环境其实就是实战一一文完整的示例,包含打包样式.打包图片.以及打包javascript 项目结果如下: w…
其他章节请看: vue 快速入门 系列 实例方法(或 property)和静态方法 在 Vue(自身) 项目结构 一文中,我们研究了 vue 项目自身构建过程,也知晓了 import Vue from 'core/index' 就是引入 vue 的核心代码,该文件的前两行对应着 vue 的实例方法和静态方法(或称全局方法),本篇就和大家一起来看一下这两部分. // vuev2.5.20/src/core/index.js // 返回 Vue 构造函数,并准备好实例方法 import Vue fr…
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web api来提供调用:好在Angular2提供了本地模拟的api,可以供我们编写方便:但是,真实使用的情况往往与本地模拟有一些差别,会存在跨域等一系列问题:这些不在本篇文章的讲解范围之内,如果在.net下遇到跨域问题可以直接私信我. Angular的http模块并不是Angular2的核心模块,你并不一…
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从python到Node.js,了解过设计模式,也跟风了微信公众号开发.然而却浅尝辄止,未曾深入.买了一本本的技术书籍,没完整的翻完一本.屯了一部部的pdf,却只是在手机里占着内存.想过改变,却从未曾着手改变. 以上算是我程序猿生涯的真实写照. 现在我要尝试改变,从基础的helloworld开始,记下学习…
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们的程序更好的工作. 假设你已经跟上了我们的进度. 我们来为我们的文章明细新增一个评论框:当我们在明细中点击评论的时候,在我们的明细页面显示评论,这里,我们就可以完全把明细页面看成一个独立的路由,可以建立自己的子路由页面,做一些评论,分享等操作. 那,首先在data目录下建立我们的评论实体Commen…
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇文章开始引入第三方的css库materializecss,引入方法直接在index.html中普通引用就可以了 众所周知,Angular出现的目的就是解决web编程的一些限制,让我们编写的网页能像App一样运作,我们现在称之为单页面应用(SPA),单页面应用程序有诸多好处,譬如页面响应快,良好的前后…
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得我们可以很优雅得做到这一点.这里简单描述下,依赖注入可以使我们在编写代码的时候不用使用new 去生成一个类,这样就达到了解耦的目的,更多关于依赖注入的知识我觉得不应该在这里讲解 和其他方式类似,Angular2使用的是装饰器@Injectable()来描述以一个类是否可注入,我们本篇文章的目的,就是…
一.从官网创建模板项目 进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2015打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打开Web.config,修改连接字符串.(因为我本地装的sqlserver是实例是.sqlexpress,所以需要手动修改server.) 打开程序包管理器控制台,选择以EntityFramework结尾的项目,并执行Update-Database,以创建数据库. Ctrl+F5运行,使用账号adm…
准备来一波新技术,待续.... Old: 联系源码:https://github.com/dunitian/LoTHTML5 文档下载:https://github.com/dunitian/LoTDotNet/ 思维导图(不断更新): 图片:http://dnt.dkill.net/DNT/HTML5/index.jpg 源码:http://dnt.dkill.net/DNT/HTML5/h5.zip 在线文档:http://dnt.dkill.net/DNT/HTML5 00.Web大前端时…
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 源码:https://github.com/dunitian/LoTHTML5/tree/master/LoTHTML5/4.HTML5定位 定位类型 IP 定位 优点 任何位置都可用 在服务器端处理 缺点 不精确,一般精确到城市 运算代价大,可能出错 代理的时候就可能定位出错了 GPS定位 优点 定位精准 缺点 定位时间长,耗电量大 室内效果不好 需要…