随笔分类 -  js

摘要:类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。 class Foo { static classMethod() { return 'hello'; } } Foo.clas 阅读全文
posted @ 2020-03-25 16:20 banzhuxiang 阅读(362) 评论(0) 推荐(0)
摘要:严格模式 类和模块的内部,默认就是严格模式,所以不需要使用use strict指定运行模式。只要你的代码写在类或模块之中,就只有严格模式可用。考虑到未来所有的代码,其实都是运行在模块之中,所以 ES6 实际上把整个语言升级到了严格模式 不存在提升 类不存在变量提升(hoist),这一点与 ES5 完 阅读全文
posted @ 2020-03-25 16:15 banzhuxiang 阅读(198) 评论(0) 推荐(0)
摘要:类的属性名,可以采用表达式。 let methodName = 'getArea'; class Square { constructor(length) { // ... } [methodName]() { // ... } } 上面代码中,Square类的方法名getArea,是从表达式得到的 阅读全文
posted @ 2020-03-25 16:08 banzhuxiang 阅读(483) 评论(0) 推荐(0)
摘要:与 ES5 一样,在“类”的内部可以使用get和set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。 class MyClass { constructor() { // ... } get prop() { return 'getter'; } set prop(value) { 阅读全文
posted @ 2020-03-25 16:02 banzhuxiang 阅读(655) 评论(0) 推荐(0)
摘要:生成类的实例的写法,与 ES5 完全一样,也是使用new命令。如果忘记加上new,像函数那样调用Class,将会报错。 class Point { // ... } // 报错 var point = Point(2, 3); // 正确 var point = new Point(2, 3); 与 阅读全文
posted @ 2020-03-25 15:59 banzhuxiang 阅读(317) 评论(0) 推荐(0)
摘要:constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。 class Point { } // 等同于 class Point { constructor() { 阅读全文
posted @ 2020-03-25 15:38 banzhuxiang 阅读(1326) 评论(0) 推荐(0)
摘要:class关键字,可以定义类 function Point(x, y) { this.x = x; this.y = y; } Point.prototype.toString = function () { return '(' + this.x + ', ' + this.y + ')'; }; 阅读全文
posted @ 2020-03-25 15:34 banzhuxiang 阅读(151) 评论(0) 推荐(0)
摘要:回调函数 事件监听 发布/订阅 Promise 对象 阅读全文
posted @ 2020-03-25 15:23 banzhuxiang 阅读(92) 评论(0) 推荐(0)
摘要:由于 Generator 函数返回的遍历器对象,只有调用next方法才会遍历下一个内部状态,所以其实提供了一种可以暂停执行的函数。yield表达式就是暂停标志。 function* gen() { yield 123 + 456; } 上面代码中,yield后面的表达式123 + 456,不会立即求 阅读全文
posted @ 2020-03-25 14:55 banzhuxiang 阅读(204) 评论(0) 推荐(0)
摘要:Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同 Generator 函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态(yield在英语里的意思就是“产出”) f 阅读全文
posted @ 2020-03-25 14:49 banzhuxiang 阅读(234) 评论(0) 推荐(0)
摘要:一个数据结构只要部署了Symbol.iterator属性,就被视为具有 iterator 接口,就可以用for...of循环遍历它的成员。也就是说,for...of循环内部调用的是数据结构的Symbol.iterator方法。 for...of循环可以使用的范围包括数组、Set 和 Map 结构、某 阅读全文
posted @ 2020-03-25 14:41 banzhuxiang 阅读(173) 评论(0) 推荐(0)
摘要:遍历器(Iterator)它是一种接口,为各种不同的数据结构提供统一的访问机制。 任何数据结构只要部署 Iterator 接口,就可以完成遍历操作 Iterator 的作用 一是为各种数据结构,提供一个统一的、简便的访问接口;二是使得数据结构的成员能够按某种次序排列;三是 ES6 创造了一种新的遍历 阅读全文
posted @ 2020-03-25 14:37 banzhuxiang 阅读(187) 评论(0) 推荐(0)
摘要:Array、ObjectMap和Set 阅读全文
posted @ 2020-03-25 14:33 banzhuxiang 阅读(168) 评论(0) 推荐(0)
摘要:finally() finally方法用于指定不管 Promise 对象最后状态如何,都会执行的操作 promise .then(result => {···}) .catch(error => {···}) .finally(() => {···}); all() Promise.all()方法用 阅读全文
posted @ 2020-03-25 14:26 banzhuxiang 阅读(206) 评论(0) 推荐(0)
摘要:Promise.prototype.catch方法是.then(null, rejection)或.then(undefined, rejection)的别名,用于指定发生错误时的回调函数。 getJSON('/posts.json').then(function(posts) { // ... } 阅读全文
posted @ 2020-03-25 13:56 banzhuxiang 阅读(274) 评论(0) 推荐(0)
摘要:Promise 实例具有then方法,也就是说,then方法是定义在原型对象Promise.prototype上的。 then方法的第一个参数是resolved状态的回调函数, 第二个参数(可选)是rejected状态的回调函数。 then链式写法 getJSON("/posts.json").th 阅读全文
posted @ 2020-03-25 13:45 banzhuxiang 阅读(338) 评论(0) 推荐(0)
摘要:所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。 对象的状态不受外界影响。Promise对象代表一个异 阅读全文
posted @ 2020-03-25 13:36 banzhuxiang 阅读(169) 评论(0) 推荐(0)
摘要:Reflect 是一个内置的对象,它提供拦截 JavaScript 操作的方法。这些方法与proxy handlers的方法相同。Reflect不是一个函数对象,因此它是不可构造的 与大多数全局对象不同,Reflect不是一个构造函数。你不能将其与一个new运算符一起使用,或者将Reflect对象作 阅读全文
posted @ 2020-03-25 13:17 banzhuxiang 阅读(267) 评论(0) 推荐(0)
摘要:在 Proxy 代理的情况下,目标对象内部的this关键字会指向 Proxy 代理。 const target = { m: function () { console.log(this proxy); } }; const handler = {}; const proxy = new Proxy 阅读全文
posted @ 2020-03-25 10:21 banzhuxiang 阅读(482) 评论(0) 推荐(0)
摘要:Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改 Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器 阅读全文
posted @ 2020-03-25 10:15 banzhuxiang 阅读(97) 评论(0) 推荐(0)