js继承方式

一、对象冒充
Js代码 收藏代码
//对象冒充,是指将父类的属性和方法一起传给子类作为特权属性和特权方法

function Person(name,age){  
    this.name = name;  
    this.age = age;  
    this.sayHi = function(){  
        alert('hi');  
    }  
}  
  
Person.prototype.walk = function(){  
    alert('walk.......');  
}  
  
function Student(name,age,grade){  
    //是指将父类的属性和方法一起传给子类作为特权属性和特权方法。  
    this.newMethod = Person;  
    this.newMethod(name,age);  
    delete this.newMethod;//如果不删除,newMethod还有Person的prototype方法walk  
    this.grade = grade;  
}  
  
var s1 = new Student('xiaoming',10,3);  
console.log(s1);//s1作为Student的对象,拥有父类和子类的属性  
//Student { name="xiaoming", age=10, grade=3, sayHi=function() }  
  
//s1.walk();//报错 s1.walk is not a function  

//结论:Student类只继承了Person类的特权属性和方法,并没有继承Person类的共有属性和方法。

二、call和apply(借用构造函数)

//使用call或apply改变对象的作用域来实现继承,让父类的this等于新创建的子类的对象  
  
function Person(name,age){  
    this.name = name;  
    this.age = age;  
    this.sayHi = function(){  
        alert('hi');  
    }  
}  
  
Person.prototype.walk = function(){  
    alert('walk.......');  
}  
  
function Student(name,age,grade){  
    //让父类的this等于新创建的子类的对象  
    Person.call(this, name, age);  
    this.grade = grade;  
}  
  
var s1 = new Student('xiaoming',10,3);  
console.log(s1);//s1作为Student的对象,拥有父类和子类的属性  
//Student { name="xiaoming", age=10, grade=3, sayHi=function() }  
  
  
//s1.walk();//s1.walk is not a function  

//结论:同前面的对象冒充一样,Student类只继承了Person类的特权属性和方法,并没有继承Person类的共有属性和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值