Javascript繼承5:如虎添翼----寄生式繼承

/*
* 寄生式繼承
* 其實就是對原型繼承的第二次封裝,在封裝過程當中對繼承的對象進行了擴展。
* 也存在原型繼承的缺點!!
* 這種思想的做用也是爲了寄生組合式繼承模式的實現。
*/
//聲明基對象
var book = {
    name:'js book',
    alikeBook:['Html','Css']
};

//原型式繼承
function inheritObj(obj){
    //聲明一個過渡函數對象
    function F(){}
    //過渡對象的原型繼承父對象
    F.prototype = obj;
    //返回過渡對象的一個實例,該實例的原型繼承了父對象
    return new F();
}

function createBook(obj){
    // 經過原型繼承方式建立對象
    var object = new inheritObj(obj);
    // 拓展新對象
    object.getName = function(){
        console.log(this.name);
    };
    // 返回擴展後的對象
    return object;
}

var book1 = createBook(book);
book1.name = 'css';
book1.alikeBook.push('javascript');
console.log(book1.alikeBook); // ['Html','Css','javascript']
book1.getName();              // css

var book2 = new createBook(book);
book2.name = '設計模式';
console.log(book2.alikeBook); // ['Html','Css','javascript']
book2.getName();              // css

設計模式中的經典筆錄javascript

相關文章
相關標籤/搜索