十二、class 与 extends

 ①、类的基本定义和生成实例

{
class Parent{
constructor(name='Lain'){ //定义构造函数
this.name = name;
}
}
let a = new Parent('Mayu'); //生成实例
console.log(a); //Parent {name: "Mayu"} //继承
class Child extends Parent{ //通过 关键字 extends 实现继承 }
let b = new Child();
console.log(b) //Child {name: "Lain"} 继承了Parent 并使用了Parent的默认值
}

②、通过 extends 实现继承

{
class Parent{
constructor(name='Lain'){
this.name = name;
}
}
//继承
class Child extends Parent{ //通过 关键字 extends 实现继承
constructor(name='child'){ //定义了子类的默认值
super(name); //使用 super方法传递参数
this.type='child'; // **在继承关系中 如果使用了super 一定要将 super方法放在第一行
}
}
let b = new Child();
console.log(b) //Child {name: "child", type: "child"} 继承了Parent 并使用了Child的默认值
}

③、class 中的 getter 和 setter

{
class Parent{
constructor(name='Lain'){
this.name = name;
}
get longName(){ // ** 这里是属性 而不是方法
return 'Hello '+this.name;
}
set longName(value){
this.name =value;
}
} let c = new Parent();
console.log('getter',c.longName); //getter Hello Lain
c.longName = 'abc';
console.log('setter',c.longName); //setter Hello abc
}

④、class 中的 静态方法

{
class Parent{
constructor(name='Lain'){
this.name = name;
} static tell(){ // 使用 关键字 static 定义静态方法
// *** 该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。
console.log('static');
}
}
Parent.tell(); //static
}

⑤、class 中的 静态属性

{
class Parent{
constructor(name='Lain'){
this.name = name;
} static tell(){
console.log('static');
}
}
Parent.type ='test'; // 在 class 定义完毕后 在 类 上直接定义 静态方法 而不是在实例上
console.log('静态属性',Parent.type); //静态属性 test
}

ES6新特性使用小结(五)的更多相关文章

  1. ES6新特性使用小结(三)

    九.数据类型 Symbol /* * Symbol 数据类型 概念: Symbol 提供一个独一无二的值 * */ { let a1 = Symbol(); let a2 = Symbol(); co ...

  2. ES6新特性使用小结(六)

    十三.promise 异步编程 ①.使用 promise 模拟异步操作 { //ES5 中的 callback 解决 异步操作问题 let ajax = function (callback) { c ...

  3. ES6新特性使用小结(四)

    十一.Proxy .Reflect ①.Proxy 的概念和常用方法 { let obj = { //1.定义原始数据对象 对用户不可见 time: '2017-09-20', name: 'net' ...

  4. ES6新特性使用小结(二)

    六.Array 扩展 /* * Array Api Array.of 数组的构建 * */ { let arr = Array.of(, , , , , ); console.log(arr); // ...

  5. ES6新特性使用小结(一)

    一.let const 命令 'use strict'; /*function test(){ //let a = 1; for(let i=1;i<3;i++){ console.log(i) ...

  6. ES6新特性概览

    本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...

  7. ES6新特性之模板字符串

    ES6新特性概览  http://www.cnblogs.com/Wayou/p/es6_new_features.html 深入浅出ES6(四):模板字符串   http://www.infoq.c ...

  8. Atitit js版本es5 es6新特性

    Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ...

  9. ES6新特性:Proxy代理器

    ES6新特性:Proxy: 要使用的话, 直接在浏览器中执行即可, node和babel目前还没有Proxy的polyfill;,要使用的话,直接在浏览器中运行就好了, 浏览器的兼容性为:chrome ...

随机推荐

  1. iOS审核总被拒?腾讯教你提升iOS审核通过率!

    作者:Jamie,腾讯开发工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest ...

  2. 分享知识-快乐自己:初识 Hibernate 概念片(一)

    1):什么是 Hibernate? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibe ...

  3. openfire开发环境(3.9.1)

    1.解压源码 2.把build/eclipse中的文件cp到源码跟目录,并修改文件名,前面增加"."号,变成eclipse工程. 3.导入eclipse, 把build/lib/, ...

  4. codeforces 659A A. Round House(水题)

    题目链接: A. Round House time limit per test 1 second memory limit per test 256 megabytes input standard ...

  5. 制定一套适合自己团队的GITflow标准化工作流

    Git作为分布式代码管理的“当红炸子鸡”,被越来越多团队使用.当团队多个人员在同一个Git仓库上进行代码开发,没有一套标准化流程,将会引起代码管理的混乱,上线流程的迷茫,影响工作效率.制定一套适合自己 ...

  6. python爬虫知识点总结(四)Requests库的基本使用

    官方文档:http://docs.python-requests.org/en/master 安装方法 命令行下输入:pip3 install requests.详见:https://www.cnbl ...

  7. JVM内存溢出环境备份方法

    线上Tomcat服务内存溢出,且不容易重现,又没配置JMX监控端口,如何在不重启Tomcat的情况下备份堆dump和线程dump,进而分析原因? 因为Tomcat以服务模式运行,直接用JVisualV ...

  8. HDU1828:Picture

    浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:http://acm.hdu.edu.cn/showproblem.php? ...

  9. Linux MySQL5.5的安装

    1.安装cmake [root@server1 src]# cd /opt/ipnms/src[root@server1 src]# tar zxvf cmake-2.8.4.tar.gz[root@ ...

  10. xml解析中的sax解析

    title: xml解析中的sax解析 tags: grammar_cjkRuby: true --- SAXPasser 类: parser(File file, DefaultHandler ha ...