提示:
本文为JavaScript栏目:JavaScript高级系列——ES6新特性章节 第十一章
JavaScript高级学习:ES6新特性11——继承的学习02
前言
本文粗浅学习继承。
提示:以下是本篇文章正文内容,下面案例可供参考
继承
继承的内置函数
class F{
}
class S extends F{
}
getPrototypeOf中参数为类名
console.log(Object.getPrototypeOf(S)); //F
console.log(Object.getPrototypeOf(S)===F); //true
ES6中使用extents关键字可以实现继承JS内置类的效果,扩展内置类的用法
自定义myArray类,继承Array类
此时内部没有任何代码,表示内部由一个无参的构造函数,并且在这个构造函数内调用了一个无参的父类的构造函数
class myArray extends Array{
/*
空
*/
constructor(...items) {
super(...items);
}
}
let arr=new Array(1,3,5,7,9); //原生Array对象
console.log(arr); // [1,3,5,7,9]
arr[5]=11;
console.log(arr); // [1,3,5,7,9,11]
let arr2=new myArray(1,3,5,7,9); //自定义的Array对象
console.log(arr2); // myArray(5) [1, 3, 5, 7, 9]
arr2[5]=11;
console.log(arr2); // myArray(6) [1, 3, 5, 7, 9, 11]
console.log(arr2.length);//6
console.log(Object.getPrototypeOf(myArray) === Array);//true
自定义DebugError类,继承Error类
class DebugError extends Error{
constructor(message) {
super();
this.message=message;
this.name=this.constructor.name;
this.stack=(new Error()).stack;
// super.message=message;
}
}
try{
console.log("进入try语句"); //进入try语句
throw new DebugError("别调试了,该睡觉了程序员!");
/*
console.log(this.message); //别调试了,该睡觉了程序员!
console.log(this.constructor.name); //DebugError
*/
}catch (e) {
console.log("----------")
console.log(e.name); //DebugError
console.log(e.message); //别调试了,该睡觉了程序员!
console.log(e.stack); //Error
}