JavaScript inherit 类的继承
class Serialization {
constructor() {
console.log('Serialization constructor~~~~~~~');
if (typeof (this.serialize) != 'function') {
throw new ReferenceError('should define serilize');
}
}
}
class Point extends Serialization {
constructor(x, y) {
super();
console.log('Point constructor ~~~~~~~~~~~~~~');
this.x = x;
this.y = y;
// this.serialize = () => {
// return `<Point $$ (${this.x}:${this.y})>`
// }
}
serialize(){
return `<Point (${this.x}:${this.y})>`;
}
}
class Point3D extends Point {
constructor(x, y, z) {
super(x, y);
this.z = z;
}
}
// s=new Serialization()
p = new Point(44, 88)
console.log(typeof p.serialize == 'function')
class A extends Object { };
console.log(A)
const B = class extends A {
constructor() {
super();
console.log('B constructor')
}
}
console.log(B)
b = new B()
console.log(b)
// const x = function (sup) {
// return class extends sup {
// constructor() {
// super();
// console.log('sub_sup constructor')
// }
// }
// }
// const x = (sup) => {
// return class extends sup {
// constructor() {
// super();
// console.log('sub_sup constructor')
// }
// }
// }
const x = sup => class extends sup {
constructor() {
super();
console.log('sub_sup contructor');
}
}
xx = x(B)
console.log(1111111,xx)
z = new xx()
console.log(z)
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
console.log('Point construct')
}
serialize(){
return `<Point (${this.x}:${this.y})>`
}
}
const Serialization = Super => class extends Super {
constructor(... args) {
super(...args);
console.log('Serialization construct');
if(typeof this.serialize != 'function')
throw new ReferenceError('should define serialize')
}
}
class Point3D extends Serialization(Point){
constructor(x,y,z){
super(x,y);
this.z=z;
}
serialize(){
return `<Point3D (${this.x}:${this.y}:${this.z})>`
}
}
p=new Point3D(2,3,8)
console.log(p)
console.log(p.serialize())
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律