? ? ? ?面向?qū)ο笙鄬τ诿嫦蜻^程是另外一種方法趋厉。何為對象缝龄?萬物皆對象汰现!編寫的程序來源生活中,所以叔壤,編寫的程序可以反映生活瞎饲。對象有特點/屬性/數(shù)據(jù),和行為/動作/功能百新。面對對象編程的步驟:1.找出對象企软;2.實現(xiàn)對象
JavaScript規(guī)定,一個函數(shù)可以用new關鍵字來調(diào)用饭望。那么此時將按順序發(fā)生四件事情:
1)隱秘的創(chuàng)建一個新的空對象
2)將這個函數(shù)里面的this綁定到剛才創(chuàng)建隱秘新對象上
3)執(zhí)行函數(shù)體里面的語句
4)返回這個新的對象
? ? ? ?這個步驟是先創(chuàng)建一個函數(shù)仗哨,里面的屬性用this打頭,再定義一個新的函數(shù)铅辞,一定要在原函數(shù)前面加上加上“new”厌漂。
? ? ? ?在JavaScript中,任何一個函數(shù)斟珊,都有一個prototype屬性苇倡,指向一個對象。每個構造函數(shù)中都存在一個隱藏對象囤踩,名字是prototype旨椒,prototype在英文當中的意思是原型的意思。執(zhí)行流程為:1.在構造函數(shù)中找堵漱,若找到了就立即結束综慎,若找不到就再原型對象中找,找到結束勤庐,找不到就報錯示惊。prototype一定是函數(shù)的屬性!當這個函數(shù)是一個構造函數(shù)的時候愉镰,那么它new出來的對象米罚,將以它的原型那個對象為new出來的實例的原型對象。
? ? ? ?繼承的意思是給原對象增加一些新的屬性和方法丈探,可以new出一個新的對象录择。這個新的對象會擁有上元對象的屬性和方法,還可以增加一些新的方法和屬性碗降,避免了代碼的重復書寫隘竭。
例如:
function People(a,b,c){
this.name = a;
this.age = b;
this.height = c
}
People.prototype.eat = function(){
console.log("牛排太好吃啦")
}
People.prototype.drink = function(){
console.log("酸梅湯太好喝啦!")
}
function Boy(a,b,c,d){
this.name = a;
this.age = b;
this.height = c;
this.sex = d
}
Boy.prototype = new People();
Boy.prototype.play = function(){
console.log("打游戲遗锣,玩密室逃脫货裹!")
}
Boy.prototype.run = function(){
console.log("跑跑跑!")
}
var zhuangyuan = new Boy("狀元",20,176,"男")
zhuangyuan.play();
zhuangyuan.run();
zhuangyuan.eat();
zhuangyuan.drink();
console.log(zhuangyuan.name);
console.log(zhuangyuan.age);
console.log(zhuangyuan.height);
console.log(zhuangyuan.sex)