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框架 -- CLI执行php代码
什么是CLI: CLI (命令行界面)是一种基于文本的和计算机交互的方式. 更多信息, 请查看 维基百科 . 为什么使用CLI? 虽然不是很明显,但是有很多情况下我们需要使用命令行来运行 CodeIg ...
- POI设置Word页边距
参考资料:http://stackoverflow.com/questions/17787176/spacing-and-margin-settings-in-word-document-using- ...
- c++ A类包含B类指针,B类包含A类指针的情况
#include<stdio.h> class Bclass; class Aclass { public: friend Bclass; void func() { pB->fun ...
- iOS:ODRefreshControl
https://github.com/Sephiroth87/ODRefreshControl Important note if your project doesn’t use ARC: you ...
- memcached能获取所有的key吗
memcached能获取所有的key吗 Memcache 查看列出所有key方法 Memcached中获取所有的key 特别要注意:memcached保存的值需要序列化,否则是无法保存的,而且是不会报 ...
- UNIX环境编程学习笔记(23)——信号处理初步学习
lienhua342014-10-29 1 信号的概念 维基百科中关于信号的描述是这样的: 在计算机科学中,信号(英语:Signals)是 Unix.类 Unix 以及其他 POSIX 兼容的操作系统 ...
- [转]jmeter实战
[转]http://blog.csdn.net/ultrani/article/details/8309932 本文主要介绍性能测试中的常用工具jmeter的使用方式,以方便开发人员在自测过程中就能自 ...
- koa-route模块
const Koa = require('koa'); const route = require('koa-route'); const app = new Koa(); const about = ...
- sql产生随机时间
--建立过程 CREATE PROCEDURE GetTime @BeginTime VARCHAR(5), @EndTime VARCHAR(5), @RandTime VA ...
- Bootstrap 各种进度条详解
一:默认的进度条 创建一个基本的进度条的步骤如下: 添加一个带有 class .progress 的 <div>. 接着,在上面的 <div> 内,添加一个带有 class . ...