es6 - class的学习
http://es6.ruanyifeng.com/#docs/class
:
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()
es6 - class的学习的更多相关文章
- es6从零学习(五):Module的语法
es6从零学习(五):Module的语法 ES6 模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量 一:es6模块化和 CommonJS 和 AMD 模块 (运行 ...
- es6从零学习(四):Class的继承
es6从零学习(四):Class的继承 一:继承的方式 1.Class 可以通过extends关键字实现继承 class Point { } class ColorPoint extends Poin ...
- es6从零学习(三):Class的基本用法
es6从零学习(三):Class的基本用法 一:定义一个类 //定义类 class Point { constructor(x, y) { this.x = x; this.y = y; } toSt ...
- es6从零学习(二):promise
es6从零学习(二):promise 一:promise的由来 某些情况下,回调嵌套很多时,代码就会非常繁琐,会给我们的编程带来很多的麻烦,这种情况俗称——回调地狱.由此,Promise的概念就由社区 ...
- es6从零学习(一)let 和 const 命令
es6从零学习(一):let 和 const 命令 一:let 变量 1.块级作用域{}:let只在自己的块级作用域内有效. for(let i =0;i<3;i++) { console.lo ...
- 【ES5 ES6】使用学习
[ES5 ES6]使用学习 转载: ============================================================= 1.Promise 2.下划线转驼峰,驼 ...
- es6零基础学习之项目目录创建(一)
和大家分享一下在学习es6的过程中所积累的东西,也希望更多的朋友能够互相学习 首先创建项目目录 打开你的命令行,什么文件下都可以,大家请随意,我自己用的git,输入 mkdir es6 创建一个完整的 ...
- es6新特性学习
本文用来记录一下es6的新特性,持续更新.... es6在前端目前还不能大面试使用,包括移动端兼容也不好.不过在node中已可以使用其中96%的特性.也可使用一些插件将es6转化为es5,比如babl ...
- es6零基础学习之构建脚本(二)
编译器打开你的es6项目 首先:创建我们的第一个脚本,tasks/util/args.js 在文件里面要先引入一个包,处理命令行参数 import yargs from 'yargs'; / ...
- ES6语法的学习与实践
ES6是JavaScript语言的新一代标准,是ECMAScript的第六个版本,加入了很多新的功能和语法,在很多框架,如在使用Vue,React等框架的项目中一般都采用ES6语法来编写的,下面对经常 ...
随机推荐
- CI框架 -- 配置文件config.php
application/config/config.php 文件 $config['base_url'] = "http://www.baidu.com/". 您网站的网址,Cod ...
- R语言在柱状图上添加文字
代码示例: data <- data.frame(A = 1:2, B = 1:2, C = 1:2) data <- data.matrix(data) par(font = 2, lw ...
- java-信息安全(三)-PBE加密算法
概述 信息安全基本概念: PBE算法(Password Based Encryption,基于口令加密) PBE PBE算法(Password Based Encryption,基于口令加密)是一种基 ...
- 机器学习结果加ID插入数据库源码
import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics import org.apache.spark.mllib.l ...
- SOCKET,TCP/IP,UDP,HTTP,FTP总结
一.TCP/UDP,SOCKET,HTTP,FTP简析 TCP/IP是个协议组(主要解决数据如何在网络中传输),可分为三个层次:网络层.传输层和应用层: 网络层:IP协议.ICMP协议.ARP协议 ...
- MyEclipse使用笔记
简单记录下个人常用的一些MyEclipse设置 VS颜色方案 Window-->Preference-->Java->Editor-->Syntax Coloring Clas ...
- django test模块
今天试了试django自带的test模块,断点执行到一下代码中时发现一点儿小问题: def _create_test_db(self, verbosity, autoclobber): "& ...
- 在ABBYY中如何修正倾斜的PDF页面
作为一名文案工作者,每天都要跟各种PDF文件打交道,合同.报价单.协议书等等等,通常提供给客户的都是扫描之后的PDF文档,虽说都是机器扫描,但毕竟是人为放置的,难免位置放置不齐,导致扫描出来的文档出现 ...
- 临时解决Apache服务器假死的参数配置
<IfModule mpm_prefork_module> StartServers MinSpareServers MaxSpareServers MaxClients MaxReque ...
- python装饰器、继承、元类、mixin,四种給类动态添加类属性和方法的方式(一)
介绍装饰器.继承.元类.mixin,四种給类动态添加类属性和方法的方式 有时候需要給类添加额外的东西,有些东西很频繁,每个类都需要,如果不想反复的复制粘贴到每个类,可以动态添加. # coding=u ...