Class 的继承

浏览: 4073 2019年12月13日
Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。class Point {}class ColorPoint extends Point {}上面代码定义了一个ColorPoint类,该类通过extends关键字,继承了Point类的所...

new.target 属性

浏览: 4218 2019年12月07日
new是从构造函数生成实例对象的命令。ES6 为new命令引入了一个new.target属性,该属性一般用在构造函数之中,返回new命令作用于的那个构造函数。如果构造函数不是通过new命令或Reflect.construct()调用的,new.target会返回undefined,因此这个属性可...

class类私有属性的提案

浏览: 4305 2019年11月30日
目前,有一个提案,为class加了私有属性。方法是在属性名之前,使用#表示。class IncreasingCounter { #count = 0; get value() { console.log('Getting the current value!'); return ...

class类私有方法和私有属性

浏览: 4327 2019年11月26日
私有方法和私有属性,是只能在类的内部访问的方法和属性,外部不能访问。这是常见需求,有利于代码的封装,但 ES6 不提供,只能通过变通方法模拟实现。一种做法是在命名上加以区别。class Widget { // 公有方法 foo (baz) { this._bar(baz); } /...

Class类静态属性

浏览: 4366 2019年11月22日
静态属性指的是 Class 本身的属性,即Class.propName,而不是定义在实例对象(this)上的属性。class Foo {}Foo.prop = 1;Foo.prop // 1上面的写法为Foo类定义了一个静态属性prop。目前,只有这种写法可行,因为 ES6 明确规定,Class...

class类实例属性的新写法

浏览: 4298 2019年11月12日
实例属性除了定义在constructor()方法里面的this上面,也可以定义在类的最顶层。class IncreasingCounter { constructor() { this._count = 0; } get value() { console.log('Getti...

javascript Class类静态方法

浏览: 4335 2019年11月11日
类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。class Foo { static classMethod() { return 'hello'; }}Foo....

javascript Class类表达式注意点

浏览: 4410 2019年11月08日
1)严格模式类和模块的内部,默认就是严格模式,所以不需要使用use strict指定运行模式。只要你的代码写在类或模块之中,就只有严格模式可用。考虑到未来所有的代码,其实都是运行在模块之中,所以 ES6 实际上把整个语言升级到了严格模式。(2)不存在提升类不存在变量提升(hoist),这一点与 ...

Class类的属性表达式

浏览: 4204 2019年10月31日
类的属性名,可以采用表达式。let methodName = 'getArea';class Square { constructor(length) { // ... } [methodName]() { // ... }}上面代码中,Square类的方法名getArea,...

Class类取值函数(getter)和存值函数(setter)

浏览: 4358 2019年10月30日
与 ES5 一样,在“类”的内部可以使用get和set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。class MyClass { constructor() { // ... } get prop() { return 'getter'; } set p...

类的实例

浏览: 4218 2019年10月29日
生成类的实例的写法,与 ES5 完全一样,也是使用new命令。前面说过,如果忘记加上new,像函数那样调用Class,将会报错。class Point { // ...}// 报错var point = Point(2, 3);// 正确var point = new Point(2, 3);...

Class类constructor 方法

浏览: 4099 2019年10月21日
constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。class Point {}// 等同于class Point { constructor() {}...

javascript Class 的基本语法

浏览: 4086 2019年10月18日
简介类的由来JavaScript 语言中,生成实例对象的传统方法是通过构造函数。下面是一个例子。function Point(x, y) { this.x = x; this.y = y;}Point.prototype.toString = function () { return '(...

顶层 await

浏览: 4565 2019年10月18日
根据语法规格,await命令只能出现在 async 函数内部,否则都会报错。// 报错const data = await fetch('https://api.example.com');上面代码中,await命令独立使用,没有放在 async 函数里面,就会报错。目前,有一个语法提案,允许在...

async函数实例:按顺序完成异步操作

浏览: 4381 2019年10月17日
实际开发中,经常遇到一组异步操作,需要按照顺序完成。比如,依次远程读取一组 URL,然后按照读取的顺序输出结果。Promise 的写法如下。function logInOrder(urls) { // 远程读取所有URL const textPromises = urls.map(url =...

async 函数与其他异步处理方法的比较

浏览: 4074 2019年10月16日
我们通过一个例子,来看 async 函数与 Promise、Generator 函数的比较。假定某个 DOM 元素上面,部署了一系列的动画,前一个动画结束,才能开始后一个。如果当中有一个动画出错,就不再往下执行,返回上一个成功执行的动画的返回值。首先是 Promise 的写法。function ...

async 函数的实现原理

浏览: 4467 2019年10月15日
async 函数的实现原理,就是将 Generator 函数和自动执行器,包装在一个函数里。async function fn(args) { // ...}// 等同于function fn(args) { return spawn(function* () { // ... })...

await命令使用注意点

浏览: 4342 2019年10月14日
第一点,前面已经说过,await命令后面的Promise对象,运行结果可能是rejected,所以最好把await命令放在try...catch代码块中。async function myFunction() { try { await somethingThatReturnsAProm...

async 函数错误处理

浏览: 4370 2019年10月12日
如果await后面的异步操作出错,那么等同于async函数返回的 Promise 对象被reject。async function f() { await new Promise(function (resolve, reject) { throw new Error('出错了'); ...

await 命令

浏览: 2378 2019年10月11日
正常情况下,await命令后面是一个 Promise 对象,返回该对象的结果。如果不是 Promise 对象,就直接返回对应的值。async function f() { // 等同于 // return 123; return await 123;}f().then(v => conso...