35.對象吠架、原型

問答

1.OOP 指什么民晒?有哪些特性

OOP(Object Oriented Programming)指面向?qū)ο缶幊叹樱且环N程序設(shè)計思想。它將對象作為程序的基本單元镀虐。對象具有唯一的標(biāo)識符箱蟆,對象包括屬性(Properties)和方法(Methods),屬性就是需要記憶的信息刮便,方法就是對象能夠提供的服務(wù)空猜。
面向?qū)ο笥袃蓚€基本概念:
①類:類(Class)定義了一件事物的抽象特點(diǎn);它定義了一些特點(diǎn)(屬性 property)和行為(方法 method);類是對象的類型模板辈毯。
②實例:實例是根據(jù)類創(chuàng)建的對象坝疼;可以說類的實例是對象,類實際上就是一種數(shù)據(jù)類型谆沃;對象是類的具體化钝凶。
面向?qū)ο笥腥齻€基本特征:
①封裝:將一個類的使用和實現(xiàn)分開,只保留部分接口和方法與外部聯(lián)系唁影。封裝就是隱藏了某一方法的具體執(zhí)行步驟耕陷。
②繼承:在某種情況下,一個類會有子類据沈,子類比父類要更加具體化哟沫。子類會自動繼承父類的屬性和行為,并且包含它們自己的锌介。它還可以添加新的屬性和方法或者對部分屬性和方法進(jìn)行重寫嗜诀。繼承增加了代碼的可重用性。
③多態(tài):是指由繼承而產(chǎn)生的相關(guān)的不同的類孔祸,多個子類中雖然都具有同一個方法隆敢,但是這些子類實例化的對象調(diào)用這些相同的方法后卻可以獲得完全不同的結(jié)果。多態(tài)性增強(qiáng)了軟件的靈活性崔慧。

2.如何通過構(gòu)造函數(shù)的方式創(chuàng)建一個擁有屬性和方法的對象?

用new的方法創(chuàng)建拂蝎,這一過程分為三步:
①創(chuàng)建類的實例。這步是把一個空的對象的 proto 屬性設(shè)置為 F.prototype 尊浪。
②初始化實例匣屡。函數(shù) F 被傳入?yún)?shù)并調(diào)用,關(guān)鍵字 this 被設(shè)定為該實例拇涤。
③返回實例。
舉例說明

function People(name,age){
        this.name=name;
        this.age=age;
        this.say=function(){
            console.log(this.name + '說:我' + this.age + '歲了');
        }
        console.log('name:hunger');
}
var p1=new People('hunger',100);
var p2=new People('valley',2);

Paste_Image.png

使用new操作符來調(diào)用一個構(gòu)造函數(shù)的時候誉结,發(fā)生了四件事:
①var p1 = {}; //創(chuàng)建一個空對象p1
②p1.proto = Person.prototype; //將空對象p1的proto屬性指向創(chuàng)建p對象的構(gòu)造函數(shù)的prototype屬性即Person的原型對象
③Person.call(p1); //將構(gòu)造函數(shù)的作用域賦給新對象鹅士,因此Person函數(shù)中的this指向新對象p1
④return p1; //返回新對象p1

3.prototype 是什么?有什么特性惩坑?

prototype是每個函數(shù)都帶有的屬性掉盅。它指向的是一個對象,叫原型對象以舒。原型對象可視為公共區(qū)域趾痘,默認(rèn)含有constructor(就是是Person函數(shù)自己),proto這兩個屬性蔓钟。
每個對象都有個內(nèi)部屬性 proto,這個屬性指向prototype屬性永票。
構(gòu)造函數(shù)創(chuàng)建出來的對象實例也是對象,其proto指向構(gòu)造函數(shù)的prototype.
特性:構(gòu)造函數(shù)的實例的proto屬性都指向該原型對象。
也可以說成將函數(shù)用作構(gòu)造函數(shù)創(chuàng)建新實例的時候侣集,這個新的對象會從原型對象上繼承屬性和方法键俱。
舉例說明:

function People(name,age){
        this.name=name;
        this.age=age;
        this.say=function(){
            console.log(this.name + '說:我' + this.age + '歲了');
        }
}
People.prototype={friend:'jirengu'};
var p1=new People('hunger',100);
var p2=new People('valley',2);
Paste_Image.png

4.畫出如下代碼的原型圖

function People (name){
  this.name = name;
  this.sayName = function(){
    console.log('my name is:' + this.name);
  }
}

People.prototype.walk = function(){
  console.log(this.name + ' is walking');  
}

var p1 = new People('饑人谷');
var p2 = new People('前端');
Paste_Image.png

5.以下代碼中的變量age有什么區(qū)別

function People (){
  var age = 1   //私有變量,函數(shù)體外無法訪問這個變量
  this.age = 10;  //實例變量世分,People類的實例可以訪問
}
People.age = 20;  //靜態(tài)變量,通過對象本身可以訪問得到,但是該類的實例無法訪問

People.prototype.age = 30;  //設(shè)置People對象原型的屬性庵楷,實例可以訪問
var p1=new People();
Paste_Image.png

代碼

1.創(chuàng)建一個 Car 對象百姓,擁有屬性name、color瓢阴、status杯瞻;擁有方法run,stop炫掐,getStatus

function Car(name,color,status){
    this.name=name;
    this.color=color;
    this.status=status;
}
Car.prototype.run=function(){
    console.log('this car is running')
}
Car.prototype.stop=function(){
    console.log('this car is stopping');
}
Car.prototype.getStatus=function(){
    console.log('this car is ' + this.status);
}

var Car1=new Car('Toyota','black','run');
Paste_Image.png

2.創(chuàng)建一個 GoTop 對象魁莉,當(dāng) new 一個 GotTop 對象則會在頁面上創(chuàng)建一個回到頂部的元素,點(diǎn)擊頁面滾動到頂部募胃。擁有以下屬性和方法

ct屬性旗唁,GoTop 對應(yīng)的 DOM 元素的容器
target屬性, GoTop 對應(yīng)的 DOM 元素
bindEvent 方法痹束, 用于綁定事件
createNode 方法检疫, 用于在容器內(nèi)創(chuàng)建節(jié)點(diǎn)
在線預(yù)覽

3.使用構(gòu)造函數(shù)創(chuàng)建對象的方式完成輪播功能( 查看demo2),使用如下調(diào)用方式

function Carousel($node){
//todo...
}
Carousel.prototype = {
//todo ..
};

var $node1 = $('.ct').eq(0);
var $node2 = $('.ct').eq(1);
var carousel1 = new Carousel($node1);
var carousel2 = new Carousel($node2);

在線預(yù)覽

4.使用構(gòu)造函數(shù)創(chuàng)建對象的方式實現(xiàn) Tab 切換功能

在線預(yù)覽


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祷嘶,一起剝皮案震驚了整個濱河市屎媳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌论巍,老刑警劉巖烛谊,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嘉汰,居然都是意外死亡丹禀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門鞋怀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來双泪,“玉大人,你說我怎么就攤上這事密似”好” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵残腌,是天一觀的道長村斟。 經(jīng)常有香客問我贫导,道長,這世上最難降的妖魔是什么邓梅? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任脱盲,我火速辦了婚禮,結(jié)果婚禮上日缨,老公的妹妹穿的比我還像新娘钱反。我一直安慰自己,他們只是感情好匣距,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布面哥。 她就那樣靜靜地躺著,像睡著了一般毅待。 火紅的嫁衣襯著肌膚如雪尚卫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天尸红,我揣著相機(jī)與錄音吱涉,去河邊找鬼。 笑死外里,一個胖子當(dāng)著我的面吹牛怎爵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盅蝗,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼鳖链,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了墩莫?” 一聲冷哼從身側(cè)響起芙委,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狂秦,沒想到半個月后灌侣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡故痊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年顶瞳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愕秫。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖焰络,靈堂內(nèi)的尸體忽然破棺而出戴甩,到底是詐尸還是另有隱情,我是刑警寧澤闪彼,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布甜孤,位于F島的核電站协饲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏缴川。R本人自食惡果不足惜茉稠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望把夸。 院中可真熱鬧而线,春花似錦、人聲如沸恋日。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岂膳。三九已至誓竿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谈截,已是汗流浹背筷屡。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留簸喂,地道東北人毙死。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像娘赴,于是被迫代替她去往敵國和親规哲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

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