ES6继承的简单实例

class Father{
	constructor(name,age){
	this.name=name;
	this.age=age;}
	hello(){
		console.log("我的名字是"+this.name);
	}
}

class Son extends Father{
constructor(name,age,hobby){ //hobby是子类独有而父类没有的,也要记得写上
	super(name,age); //调用super方法让子类获取this对象
	this.hobby=hobby; //子类独有
}
nianling(){ //下面两个为子类独有的方法
	console.log("我的年龄是"+this.age);
}
aihao(){
console.log("我的爱好是"+this.hobby);
}
}

var myson = new Son('alexios','22','play');
myson.hello();
myson.nianling();
myson.aihao();
//子类既可以使用父类的方法,也可以使用自己的方法

在这里插入图片描述

<think> 首先,用户的问题是基于之前的引用内容,他们想查找ES6继承的代码示例。引用中提供了几个示例,我需要从中提取并展示ES6继承的代码。 从引用中: - 引用[3]直接给出了ES6继承的代码示例。 - 引用[2]和[4]提到了ES5继承,但用户指定需要ES6继承。 - 引用[1]描述了ES6继承的机制。 所以,我应该专注于引用[3],因为它有完整的代码示例。 用户的问题:"我想查找ES6继承的例子 请问ES6继承的代码示例" 我的回答需要: - 使用中文回答。 - 结构化清晰。 - 包括LaTeX格式:行内数学表达式用$...$,独立公式用$$...$$单独成段。 - 在回答中引用的段落末尾添加引用标识,例如[^1]。 - 生成相关问题。 内容要点: - 解释ES6继承的机制。 - 给出代码示例(从引用[3])。 - 确保LaTeX语法正确(虽然代码中没有数学表达式,但如果有变量等,需要处理)。 - 生成相关问题。 代码示例来自引用[3]: ``` class People { constructor() { this.a = 100; console.log("People constructor"); } eat() { console.log("eat..."); } static play() { console.log("play..."); } } class Student extends People { constructor() { super(); this.b = 200; console.log("Student constructor"); } study() { console.log("study..."); } } let stu = new Student(); console.log(stu.a, stu.b); stu.eat(); stu.study(); Student.play(); ``` 我应该完整复制这个代码,并添加引用标识。 确保回答清晰: - 先简要介绍ES6继承的原理(参考引用[1])。 - 然后展示代码。 - 解释关键点,如`super()`必须在子类构造函数的第一行。 添加引用: - 在提到机制时引用[^1]。 - 在展示代码时引用[^3]。 生成相关问题: - 结束时添加相关问题。 结构回答: 1. **介绍ES6继承**:简要描述ES6继承如何工作(基于引用[1])。 2. **代码示例**:展示引用[3]中的代码。 3. **关键点解释**:解释代码中的关键语法(如`extends`、`super()`)。 4. **相关问题**:生成2-3个相关问题。 确保LaTeX: - 如果有数学表达,使用$...$。但在代码中,变量如`this.a`可以用行内格式,但代码块不需要LaTeX,直接用代码格式。 - 系统指令说所有行内数学表达式必须用$...$,例如$x^2$。但在这个上下文中,代码变量如`a`和`b`不是数学表达式,所以不需要用LaTeX包装。保持代码原样。 最终回答应包括: - 清晰的标题或部分。 - 引用标识。 - 代码块用代码格式。 - 相关问题。 </think> ### ES6 继承代码示例 ES6 引入的 `class` 和 `extends` 关键字简化了 JavaScript 中的继承机制,其实质是先创建父类的实例对象 `this`,再由子类构造函数修改 `this`[^1]。下面是一个完整的 ES6 继承代码示例,取自引用中的实例: ```javascript class People { // 父类构造方法 constructor() { this.a = 100; // 父类属性 console.log("People constructor"); } // 原型方法 eat() { console.log("eat..."); } // 静态方法 static play() { console.log("play..."); } } class Student extends People { // 子类构造方法 constructor() { super(); // 调用父类构造器,必须在子类构造器第一行 this.b = 200; // 子类属性 console.log("Student constructor"); } // 子类原型方法 study() { console.log("study..."); } } // 测试代码 let stu = new Student(); console.log(stu.a, stu.b); // 访问继承属性:输出 100, 200 stu.eat(); // 调用继承方法:输出 "eat..." stu.study(); // 调用子类方法:输出 "study..." Student.play(); // 调用静态方法:输出 "play..." ``` ### 关键点解释 - **`extends` 关键字**:用于定义子类继承父类(如 `class Student extends People`)。 - **`super()` 的作用**:必须在子类构造函数的第一行调用,它会执行父类构造函数并初始化父类属性(如 `this.a = 100`)。如果省略,会抛出错误[^3]。 - **属性继承**:子类通过 `super()` 访问父类属性(如 `stu.a`),并可在构造函数中添加自己的属性(如 `this.b = 200`)。 - **方法覆盖**:原型方法(如 `eat()`)自动继承,静态方法(如 `play()`)则通过类名调用。 - **输出结果**:执行 `new Student()` 时,控制台依次输出: ``` People constructor Student constructor 100 200 eat... study... play... ``` 此示例展示了 ES6 继承的简洁性,相比于 ES5 的复杂原型链机制(如 `prototype` 和 `constructor`),ES6 的语法更易读和维护[^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值