• proxy

    Proxy概述Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(metaprogramming),即对编程语言进行编程。Proxy可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和...

    proposals 最新提案

    最新提案本章介绍一些尚未进入标准、但很有希望的最新提案。do表达式本质上,块级作用域是一个语句,将多个操作封装在一起,没有返回值。{lett=f();t=t*t+1;}上面代码中,块级作用域将两个语句封装在一起。但是,在块级作用域以外,没有办法得到t的值,因为块级作用域不返回值,除非t是全局变量。现...

    promise 对象

    Promise对象Promise的含义Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通...

    object 对象的扩展

    对象的扩展对象(object)是JavaScript最重要的数据结构。ES6对它进行了重大升级,本章介绍数据结构本身的改变,下一章介绍Object对象的新增方法。属性的简洁表示法ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。constfoo='bar';con...

    object methods 对象的新增方法

    对象的新增方法本章介绍Object对象的新增方法。Object.is()ES5比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript缺乏一种运算,在所有环境中,只要两个值是...

    number 数值的扩展

    数值的扩展二进制和八进制表示法ES6提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。0b111110111===503//true0o767===503//true从ES5开始,在严格模式之中,八进制就不再允许使用前缀0表示,ES6进一步明确,要使用前缀0o表示。/...

    module 的语法

    Module的语法概述历史上,JavaScript一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。其他语言都有这项功能,比如Ruby的require、Python的import,甚至就连CSS都有@import,但是JavaScript任何这方面的支...

    Module 的加载实现

    Module的加载实现上一章介绍了模块的语法,本章介绍如何在浏览器和Node.js之中加载ES6模块,以及实际开发中经常遇到的一些问题(比如循环加载)。浏览器加载传统方法HTML网页中,浏览器通过<script>标签加载JavaScript脚本。<!--页面内嵌的脚本-->&...

    mixin

    MixinJavaScript语言的设计是单一继承,即子类只能继承一个父类,不允许继承多个父类。这种设计保证了对象继承的层次结构是树状的,而不是复杂的网状结构。但是,这大大降低了编程的灵活性。因为实际开发中,有时不可避免,子类需要继承多个父类。举例来说,“猫”可以继承“哺乳类动物”,也可以继承“宠物...

    let 和 const 命令

    let和const命令let命令基本用法ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。...