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语法来编写的,下面对经常 ...
随机推荐
- C# 实现数字字符串左补齐0的两种方法
); MessageBox.Show(sss); return; 代码如上,自动补齐前面的0
- mysql 中 时间和日期函数
From: http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.html 一.MySQL 获得当前日期时间 函数 1.1 获得当前日 ...
- Git 基础 - 远程仓库的使用
远程仓库的使用 要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某个项目时,需要管 ...
- 关于HTTP Message
HTTP Message包括JS, HTML等Resource.这些都是相对来说有代码可以写的东西,但是原理的东西是没有代码的.coding只是很少的一部分工作内容. Browser的流程.比如con ...
- dropwizard metrics - 基本使用介绍
之前在healthcheck中介绍了怎样通过metrics lib往系统中增加一些简单的健康侦測.如今讲讲dropwizard metrics更重要的部分.记录系统的度量信息. dropwizard提 ...
- Oracle With As 查询
WITH AS WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候,是为了让SQL语句 ...
- 《构建高性能web站点》读书笔记:CPU/IO并发策略
服务器并发处理能力:单位时间内处理的请求数,吞吐率,reqs/s apache的mod_status,显示的 requests/sec,从启动开始的平均计算值.lighttpd的mod_status显 ...
- Java SQL注入学习笔记
1 简介 文章主要内容包括: Java 持久层技术/框架简单介绍 不同场景/框架下易导致 SQL 注入的写法 如何避免和修复 SQL 注入 2 JDBC 介绍 JDBC: 全称 Java Databa ...
- 11gR2 RAC:更换OCR、votedisk
要点: ocrconfig 备份-恢复 ocrconfig 导出-导入 crsctl querry css votedisk crsctl replace votedisk {+dsikgroup|s ...
- 元素随屏幕滚动到顶部固定js效果
网站中常见这种效果,某个广告或详情页切换tab,当屏幕向下移动时,该元素会停留在浏览器最顶部,下面ecshop模板中心教您实现js代码: 案例图: 1.首先在页面上找到该元素 加上 id =&quo ...