在JavaScript中实现继承的方法

本文详细介绍了JavaScript中实现继承的四种主要方法:原型链、call/apply方法、混合使用prototype和call/apply以及对象冒充。通过具体实例展示了每种继承方式的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.原型链(prototype chaining)
2.call()/apply()
3.混合方式(prototype和call()/apply()结合)
4.对象冒充

1. 原型链(prototype chaining)

function teacher(name){
    this.name = name;
}
teacher.prototype.sayName = function(){
    console.log("name is " + this.name);
}
var teacher1 = new teacher("leilei");
teacher1.sayName();

function student(name){
    this.name = name;
}
student.prototype = new teacher();
var student1 = new student("xiaolei");
student1.sayName();
//name is leilei
//name is xiaolei

2. call()/apply()方法

function teacher(name, age){
    this.name = name;
    this.age = age;
    this.sayHi = function(){
        alert("name: " + this.name + ", age: " + this.age);
    }
}
function student(){
    var args = arguments;
    teacher.apply(this, arguments);
    //teacher.call(this, args[0], args[1]);
}
var teacher1 = new teacher('leilei',21);
teacher1.sayHi();
var student1 = new student('xiaolei', 22);
student1.sayHi();

3. 混合方法prototype+call/apply

function teacher(name, age){
    this.name = name;
    this.age = age;
}
teacher.prototype.sayHello = function(){
    alert("name: " + this.name + ", age: " + this.age);
}
function student(){
    var args = arguments;
    teacher.call(this, args[0], args[1]);
}
student.prototype = new teacher();
var student1 = new student("xiaolei", 22);
student1.sayHello();

4. 对象冒充

function teacher(name, age){
    this.name = name;
    this.age = age;
    this.showInfo = function(){
        alert("name: " + this.name + ", age: " +this.age);
    }
}
function student(name, age){
    this.student = teacher;
    this.student(name, age);
    delete this.student;
}
var student1 = new student("xiaolei", 22);
student1.showInfo();
内容概要:本文档为《400_IB Specification Vol 2-Release-2.0-Final-2025-07-31.pdf》,主要描述了InfiniBand架构2.0版本的物理层规范。文档详细规定了链路初始化、配置与训练流程,包括但不限于传输序列(TS1、TS2、TS3)、链路去偏斜、波特率、前向纠错(FEC)支持、链路速度协商及扩展速度选项等。此外,还介绍了链路状态机的不同状态(如禁用、轮询、配置等),以及各状态下应遵循的规则和命令。针对不同数据速率(从SDR到XDR)的链路格式化规则也有详细说明,确保数据包格式和控制符号在多条物理通道上的一致性和正确性。文档还涵盖了链路性能监控和错误检测机制。 适用人群:适用于从事网络硬件设计、开发及维护的技术人员,尤其是那些需要深入了解InfiniBand物理层细节的专业人士。 使用场景及目标:① 设计和实现支持多种数据速率和编码方式的InfiniBand设备;② 开发链路初始化和训练算法,确保链路两端设备能够正确配置并优化通信质量;③ 实现链路性能监控和错误检测,提高系统的可靠性和稳定性。 其他说明:本文档属于InfiniBand贸易协会所有,为专有信息,仅供内部参考和技术交流使用。文档内容详尽,对于理解和实施InfiniBand接口具有重要指导意义。读者应结合相关背景资料进行学习,以确保正确理解和应用规范中的各项技术要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值