博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
es6 - class的学习
阅读量:6097 次
发布时间:2019-06-20

本文共 1902 字,大约阅读时间需要 6 分钟。

class Person {
constructor{
//构造函数,里边放不被继承的私有属性和方法
this.property1 = '第一个私有属性';
//属性结尾用分号
}
//不写在constructor里边的属性和方法都是写在了prototype原型上:
Func1() {

}

Fun2() {
//多个方法之间不用逗号隔开,加了逗号反而是错的
}
}
class PersonCild extends Person {
//extends实现继承
}

报错:

missing super() call in constructor ??//在构造函数中缺少super()调用
这个时候就是要在constructor里边单独写一行super();调用,

其他需要记忆的知识点:

类的数据类型就是函数,类本身就是函数
在类的实例上面调用方法,其实就是调用原型上的方法
类的原型上的constructor就是类本身
尽量不要用__proto__在实例对象上给类原型添加方法,应用object.getPrototypeOf
class表达式,给类命名,可以查找当前类:如下
const Myclass = class Me{
protoFun(){
return Me.name //Me
}
}
class没有变量提升
let也没有变量提升
类相当于实例的原型,所有在勒种定义的方法,都会被实例继承
类(动态)方法内的this,默认执行类的实例
静态方法中的this指的是类,动态方法中的this默认指的是实例
如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称之为“静态方法”,就是加上static后方法只能用类的名字来调用,实例就调不找了
静态方法可以与非静态方法重名。
父类的静态方法,可以被子类继承。
子类 的静态方法可以和父类的静态方法重名,重名后在子类的静态方法里边可以用super.方法名()调用父类的同名静态方法

私有方法:只能类内部使用,

利用Symbol的唯一性
const bar = Symbol('bar');
export default class myClass{
[bar](bar){
return '私有方法'
}
}

实例属性: 定义在实例对象(this)上的属性

静态属性: 定义在class本身的属性
写法:
class 类名{
constructor{
this.属性B = 属性值;
}
};
类名.属性A = 属性值;
这里,属性A就是静态属性,定义在类的外部

class

constructor
new target 返回new命令作用于的那个构造函数 var 实例 = new 函数A,则new target代表函数A
类名.name
get
set
static 静态方法
super 代表父类的构造函数 返回父类实例,子类必须在constructor方法中调用super方法,因为子类实例的构建,基于对父类实例的加工
obj.getPrototypeOf(zilei) === fulei;得到子类的父类

类的__proto__和prototype属性

es5中,__proto__指向构造函数的prototype属性
es6中:
子类的__proto__属性,表示构造函数的继承,总是指向父类
子类prototype属性的__proto__属性,表示方法的继承,总是指向父类的prototype属性
B.prototype.__proto__ = A.prototype;
B.__proto__ = A;
这两条继承链,可以这样理解:

作为一个对象,子类(B)的原型(__proto__属性)是父类(A);

作为一个构造函数,子类(B)的原型对象(prototype属性)是父类的原型对象(prototype属性)的实例。

实例的__proto__属性

子类原型的原型,是父类的原型:子类实例.__proto__.__proto__ = 父类实例.__proto__
因此:
通过子类实例的__proto__.__proto__属性,可以修改父类实例的行为。

原生构造函数:

是指js语言内置的构造函数,如下:
Boolean()
Number()
String()
Array()
Date()
Function()
RegExp()
Error()
Object()

转载于:https://www.cnblogs.com/padding1015/p/9184756.html

你可能感兴趣的文章
xstream cdata 处理方式之一
查看>>
cubes mysql 中文乱码
查看>>
2014年的一些大数据事件
查看>>
Rmi在Spring中的使用之RmiServiceExporter
查看>>
dubbo
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
高利率时代的结局,任重道远,前途叵测
查看>>
Debian 6.05安装后乱码
查看>>
欢迎大家观看本人录制的51CTO精彩视频课程!
查看>>
IntelliJ IDEA中设置忽略@param注释中的参数与方法中的参数列表不一致的检查
查看>>
读 《重构 : 改善既有代码的设计》
查看>>
Spring Boot 初探
查看>>
WebGrid Enterprise免费下载
查看>>
常用端口号大全
查看>>
Linux网络配置介绍及相关命令
查看>>
如何利用Redis分布式锁实现控制并发
查看>>
“份子钱”蕴含的金融学新解
查看>>