js面向對象_繼承

1垛耳、//call繼承

// 創(chuàng)建出父類構造函數(shù)
function CreatPerson (name, age) {
    this.name = name;
    this.age = age;
    this.sayHi = function () {
        alert("早上好");
    };

    
}

function CreatStudent (banJi, name, age) {
    // 使用call讓當前函數(shù)和上一級函數(shù)產(chǎn)生關聯(lián)(繼承上級函數(shù))
    // 第一個參數(shù):this指代的是學生對象栅屏,第二個參數(shù)起,指代的是函數(shù)需要的參數(shù)
    CreatPerson.call(this, name, age);  
    
    
    this.banJi = banJi;
    this.hello = "dcs"; 
    this.study = function () {
        alert("我再學習");
    }
}   
var student1 = new CreatStudent("9班", "王麗媛", 24);
console.log(student1.name);
console.log(student1.sayHi);
console.log(student1.study);


//  var per1 = new CreatPerson("123", we);

// 父類:動物類(animal)堂鲜,name\age屬性栈雳,有eat方法
// 子類:繼承自動物類(dog),name\age\leg屬性,有看門(lookDoor)方法

// 創(chuàng)建出父類
function CreatAnimal (name, age) {
this.name = name;
this.age = age;
this.eat = function () {
    console.log("別鬧缔莲,吃肉呢");
};
}

// 該方法是添加在原型上的哥纫,通過call無法繼承
CreatAnimal.prototype.haha = function () {
console.log("hahahaha");

}

function CreatDog (name, age, leg) {
// 通過call函數(shù)調(diào)用父類函數(shù),第一個參數(shù)是用來修改父類函數(shù)中this的指向對象痴奏。把 
   dog(this)對象傳遞進去并執(zhí)行父類函數(shù)蛀骇,則父類函數(shù)中添加的屬性就進入到dog對象里邊了(繼承了父類屬性厌秒、方法)。
 CreatAnimal.call(this, name, age);
 this.leg = leg;
 this.lookDoor = function () {
console.log("看門");
 }
 // 我們可以重寫父類的方法擅憔,讓子類對同一個方法名執(zhí)行不同的效果(代碼)
 this.eat = function () {
console.log("我在吃骨頭");
   }
   
}

var dog1 = new CreatDog("旺財", 12, 4);
console.log(dog1.name);
console.log(dog1.age);
console.log(dog1.leg);
console.log(dog1.eat);
console.log(dog1.lookDoor);
console.log(dog1.haha);

2鸵闪、//原型繼承

function CreatAnimal (name, age) {
this.name = name;
this.age = age;
this.sayHi = function () {
    alert("你好");
};
}

CreatAnimal.prototype.gender = "男";
CreatAnimal.prototype.sayBye = function () {
alert("走吧");
}

function CreatDog (name, age, leg) {

this.leg = leg;
this.lookDoor = function () {
    alert("看門");
}
}

// 把父類的對象當做子類的原型,這樣就把子類的原型和父類的原型聯(lián)系在一起了
CreatDog.prototype = new CreatAnimal("李淑芬",12);
// 因為對象的constructor屬性值是取決于原型中的constructor值的暑诸,而此時原型中 
constructor值指向的是父類函數(shù)蚌讼,所以要修改原型的constructor值為子類函數(shù),保證繼承關系不混亂
CreatDog.prototype.constructor = CreatDog;

var dog = new CreatDog("旺財", 13, 4);
console.log(dog.name);
console.log(dog.gender);
dog.sayBye();
console.log(dog.constructor == CreatDog);

//          dog.sayHi();

  var dog2 = new CreatDog("王桂芳",12,4);
//          dog2.name = "王桂芳";

3个榕、//組合繼承

//組合繼承的實現(xiàn)思路:使用call來繼承實例屬性篡石,使用原型鏈來繼承原型方法
function CreateAnimal(name,age){
this.name = name ;
this.age = age;
}
  CreateAnimal.prototype.eat=function(){
alert("cccc")
}

function CreateDog (name,age,leg){
CreateAnimal.call(this,name,age)
this.leg = leg;
}

CreateDog.prototype = new CreateAnimal()
CreateDog.prototype.constructor = CreateDog

//添加子類獨有方法
CreateDog.prototype.lookDoor=function(){
alert("看門")
}

var dog1 = new CreateDog("翠花",23,2);
console.log(dog1.name)
console.log(dog1.eat())

4、//冒充繼承

function CreatPerson (name,age) {
this.name = name;
this.age = age;
this.sayHi = function () {
    alert("哈哈");
}
}


function CreatStudent (name, age, banJi) {
// 通過冒充實現(xiàn)子類繼承父類的方法西采、屬性
this.newFn = CreatPerson; //1凰萨、 給this(也就是學生對象)添加一個新的方法,也就是CreatPerson這個構造函數(shù)

this.newFn(name, age); //2械馆、 執(zhí)行新添加進去的函數(shù)沟蔑,通過this.newFn調(diào)用父類函數(shù),進而修改了父類函數(shù)中this指針的指向,

delete this.newFn; // 3狱杰、刪除這個函數(shù)(過河拆橋)

this.banJi = banJi;

this.study = function () {
    alert("學習");
};

}
        
        var stu1 = new CreatStudent("李威", 23, 9);
        console.log(stu1.study);
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘦材,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子仿畸,更是在濱河造成了極大的恐慌食棕,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件错沽,死亡現(xiàn)場離奇詭異簿晓,居然都是意外死亡,警方通過查閱死者的電腦和手機千埃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門憔儿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人放可,你說我怎么就攤上這事谒臼。” “怎么了耀里?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵蜈缤,是天一觀的道長。 經(jīng)常有香客問我冯挎,道長底哥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮趾徽,結果婚禮上续滋,老公的妹妹穿的比我還像新娘。我一直安慰自己孵奶,他們只是感情好疲酌,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拒课,像睡著了一般徐勃。 火紅的嫁衣襯著肌膚如雪事示。 梳的紋絲不亂的頭發(fā)上早像,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音肖爵,去河邊找鬼卢鹦。 笑死,一個胖子當著我的面吹牛劝堪,可吹牛的內(nèi)容都是我干的冀自。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼秒啦,長吁一口氣:“原來是場噩夢啊……” “哼熬粗!你這毒婦竟也來了?” 一聲冷哼從身側響起余境,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤驻呐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芳来,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體含末,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年即舌,在試婚紗的時候發(fā)現(xiàn)自己被綠了佣盒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡顽聂,死狀恐怖肥惭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情紊搪,我是刑警寧澤务豺,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站嗦明,受9級特大地震影響笼沥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一奔浅、第九天 我趴在偏房一處隱蔽的房頂上張望馆纳。 院中可真熱鬧,春花似錦汹桦、人聲如沸鲁驶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钥弯。三九已至,卻和暖如春督禽,著一層夾襖步出監(jiān)牢的瞬間脆霎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工狈惫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留睛蛛,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓胧谈,卻偏偏與公主長得像忆肾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子菱肖,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容