在JavaScript中实现继承的方法

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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值