1.方法的定义

 有没有冒号,是不是生成器,是不是异步.

然后去组,最少两种.

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Method_definitions

2.constructor和super

 constructor和super要连起来讲,不能分开.

 所谓的super和constructor是由很强的联系的,不能分开讲.我们一听书面化的介绍就是constructor是构造函数,如果你不给他写,它自己就会构造一个空的,名字是constructor的函数,这称为构造函数.是一种用于创建和初始化class创建的对象的特殊方法。这很屁话.那他到底干嘛,讲句难听点,我一定要这个吗,你类里面给我写了接口,难道我不能自己搞,绕开你?这当然室是有很重大的干系的.至于super关键字用于访问和调用一个对象的父对象上的函数。这更是屁话,难道我通过其他手段不能调用?守格式,吗?当然不是了.

 

super([arguments]); 
// 调用 父对象/父类 的构造函数

super.functionOnParent([arguments]); 
// 调用 父对象/父类 上的方法

 他怎么说是调用父对象上的构造函数,具体的一个调用过程已经在我的上面图画中,写好了.同样super有两种调用父类上的方法.

我们先把类分为两个部分,constructor和其他部分.那么当你新建一个实例的时候,程序从子类进,先进子类的constructor,不信你把constructor放在下面,一样从这里进去.constructor.然后super一般都是在constructor中的,因为spuer要在this之前,而constructor一般都是初始化类的属性的.在constructor里调用spuer第一种方法,他会去父类的constructor中,将父类中的constructor过一遍.再次返回子类的super.这时候,子类的constructor继续走.这样就是一个简单的new一个实例.

 

 

4.static

static methodName() { ... }

 类(class)通过 static 关键字定义静态方法。不能在类的实例上调用静态方法,而应该通过类本身调用。这些通常是实用程序方法,例如创建或克隆对象的功能。

这东西你就别想new,创建一个实例了,通过new一个实例去调用这个方法是不可行的.

你还可以通过super去调用父类中的static方法.

class Rectangle {
  constructor() {}
  static logNbSides() {
    return 'I have 4 sides';
  }
}

class Square extends Rectangle {
  constructor() {}
  static logDescription() {
    return super.logNbSides() + ' which are all equal';
  }
}
Square.logDescription(); // 'I have 4 sides which are all equal'

 

5.class

 

6.extends

 

class ChildClass extends ParentClass { ... }

记住这个语法,他就是继承的.你可以使用父亲的方法和属性.但是,如果子类的方法或者属性和父类有重叠,则替换父类.或者用父类的方法调用子类的属性.super其实就是让你使用父类constructor中的方法.

7. delete

 

delete是删除类中的方法或者属性的.

var Employee = {
  age: 28,
  name: 'abc',
  designation: 'developer'
}

console.log(delete Employee.name);   // returns true
console.log(delete Employee.age);    // returns true

// 当试着删除一个不存在的属性时
// 同样会返回true
console.log(delete Employee.salary); // returns true

 但是当你试图删除spuer的时候是不行的.

class Base {
  constructor() {}
  foo() {}
}
class Derived extends Base {
  constructor() {}
  delete() {
    delete super.foo;
  }
}

new Derived().delete(); 
// ReferenceError: invalid delete involving 'super'.

8.类元素

静态公有字段和实例公有字段都是可编辑的,可遍历的,可配置的。它们本身不同于私有对应值(private counterparts)的是,它们参与原型的继承。

静态私有字段可以在类声明本身内部的构造函数上被访问到。静态变量只能被静态方法访问的限制依然存在。

私有实例字段是通过# names句型(读作“哈希名称”)声明的,即为识别符加一个前缀“#”。“#”是名称的一部分,也用于访问和声明。封装是语言强制实施的。引用不在作用域内的 # names 是语法错误。

和静态公共方法一样,静态私有方法也是在类里面而非实例中调用的。和静态私有字段一样,它们也只能在类的声明中访问。

你可以使用生成器(generator)、异步和异步生成器方法。静态私有方法可以是生成器、异步或者异步生成器函数。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值