js高级——原型对象继承的实现

1、原型继承:利用原型中的成员可以被和其相关的对象共享这一特性,可以实现继承
2、原型继承的写法
(1)给原型对象中添加成员(通过对象的动态特性,其实不是严格意义上的继承)
function Person (name , age){
    this . name = name ;
    this . age = age ;
}

Person . prototype . sayHello = function (){
    console . log ( "sayHello()" ) ;
} ;

var p = new Person ( "张学友" , 18 ) ;
p. sayHello () ; //通过原型去添加sayHello()方法
//这里的p对象就继承了原型对象

就是说原来这个对象里面没有某个方法/属性,通过上面这种方式去添加成员。对象继承原型,然后原型里面新增方法,那么这个对象里面就有这么一个方法


(2)直接替换原型对象:其实原理还是对象继承原型(虽然可以实现原型继承,但是很可能原有原型中的成员会丢失)
function Person (name , age){
    this . name = name ;
    this . age = age ;
}

var parent = { //让p对象继承parent对象
    sayHello : function (){
        console . log ( "你好" ) ;
    }
    } ;
Person . prototype = parent ;                 //把parent变成构造函数的原型就可以让p对象去继承parent对象了

var p = new Person ( "张学友" , 18 ) ;
p. sayHello () ;



(3)利用混入的方式给原型对象添加成员(还是对象继承原型)
function Person (name , age){
    this . name = name ;
    this . age = age ;
}

var parent = {
    sayHello : function (){
        console . log ( "你好呀" ) ;
    }
} ;
for ( var k in parent){
    Person . prototype [k] = parent[k] ; //因为是要给原型添加这个sayHello()方法
}

var p = new Person ( "张学友" , 18 ) ;
p. sayHello () ;

你可能感兴趣的:(js高级——原型对象继承的实现)