首页 > 代码库 > 面向对象的三大特性之继承-基础知识总结------彭记(05)
面向对象的三大特性之继承-基础知识总结------彭记(05)
面向对象的三大特性之继承:
js中的某些对象没有一些需要的属性和方法,但是另外的对象有,那么拿过使用,就是继承。
js中继承的实现方式:
1.混入式继承:通过循环将一个对象中的所有属性和方法混入到另外一个对象中:
var me={
work:function(){
console.log(‘敲代码‘);
}
};
var mayun={
money:9999999,
car:‘000‘,
manager:function(){
console.log(‘管理巴巴。。。‘);
}
}
/*遍历,让me对象拥有mayun对象的所有属性*/
for(var key in mayun){
me[key]=mayuan[key];
}
console.log(me);
2.使用原型实现继承:
function Person(){
this.name=‘jack‘;
this.age=‘20‘;
this.sayHi=function(){
console.log(‘大家好‘);
}
}
function Painter(){
this.name=‘lose‘;
this.age=‘19‘;
this.canPaint=function(){
console.log(‘画画‘);
}
}
var per=new Person();
var paint=new Painter();
function Student(){
}
/*修改构造函数的protoType属性来设置原型,但是原型只有一个,所以这种方式无法指定多种原型,后面指定的原型会覆盖前面指定的原型*/
/*Student.prototype=per;
var stu=new Student();
console.log(stu);*/
/*利用混入的方式给原型添加属性和方法*/
for(var key in per ){
Student.prototype[key]=per[key];
}
for(var key in paint){
Student.prototype[key]=paint[key];
}
var stu=new Student();
console.log(stu);
3.经典的实现继承方式:
var laoWang={
company:‘wangda‘,
money:100000000,
sayHi:function(){
console.log(‘我有钱‘+this.name);
}
}
/*经典继承方式*/
var obj=Object.create(laoWang);
console.log(obj);
/*解决经典继承的兼容性问题*/
function createObj(obj){
if(Object.create){
var newObj=Object.crate(obj);
}else{
var newObj={};
for(var key in obj){
newObj[key]=obj[key];
}
}
return newObj;
}
var obj =createObj(laoWang);
console.log(obj);
面向对象的三大特性之继承-基础知识总结------彭记(05)