對象&原型

OOP 指什么塞俱?有哪些特性

  • OOP:Object-oriented programming 的縮寫贿衍,即面向?qū)ο蟪绦蛟O(shè)計(jì),其中兩個(gè)最重要的概念就是類和對象澜驮。
    類是具備了某些功能和屬性的抽象模型澜术,實(shí)際應(yīng)用中需要的是一個(gè)個(gè)實(shí)體艺蝴,也就是需要對類進(jìn)行實(shí)例化,類在實(shí)例化之后就是對象鸟废。

  • 特性:

    • 繼承性:子類自動(dòng)繼承其父級類中的屬性和方法猜敢,并可以添加新的屬性和方法或者對部分屬性和方法進(jìn)行重寫,繼承增加了代碼的復(fù)用性盒延,讓類與類之間產(chǎn)生了聯(lián)系缩擂,提供了多態(tài)的前提
    • 多態(tài)性:子類繼承了來自父級類中的屬性和方法,并對其中部分方法進(jìn)行重寫添寺。(比如函數(shù)的length和數(shù)組的length都繼承自對象但作用不同)胯盯,提高了代碼的擴(kuò)展性和可維護(hù)性
    • 封裝性:將一個(gè)類的使用和實(shí)現(xiàn)分開,隱藏對象的屬性和實(shí)現(xiàn)細(xì)節(jié)计露,僅對外提供公共訪問方式博脑,提高代碼復(fù)用性和安全性。
  • 原則:

    • 開閉原則:
      對擴(kuò)展開放:應(yīng)用的需求改變時(shí)我們可以對模塊進(jìn)行擴(kuò)展票罐,使其具有滿足改變的新行為
      對修改封閉:對模塊行為進(jìn)行擴(kuò)展是叉趣,不必改變模塊的源碼或二進(jìn)制代碼
    • 接口隔離:
      不要依賴用不到的接口

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

function People(name, age) {
    this.name = name
    this.age = age
    this.sayName = function () {
        console.log(this.name)
    }
    this.sayAge = function () {
        console.log(this.age)
    }
}

var female = new People('dot', 2)
console.log(female)//People { name: 'dot', age: 2, sayName: f, sayAge: f }
console.log(female.sayName())//dot
console.log(female.sayAge())//2

prototype 是什么?有什么特性

  • 每個(gè)函數(shù)都有prototype這個(gè)屬性该押,對應(yīng)值是原型對象
  • 每個(gè)對象都有個(gè)內(nèi)部屬性__proto__疗杉,每個(gè)實(shí)例的__proto__指向創(chuàng)建它的構(gòu)造函數(shù)的prototype
  • 一切函數(shù)都是由 Function 這個(gè)函數(shù)創(chuàng)建的,所以Function.prototype === 被創(chuàng)建的函數(shù).__proto__
  • 一切函數(shù)的原型對象都是由 Object 這個(gè)函數(shù)創(chuàng)建的蚕礼,所以Object.prototype === 一切函數(shù).prototype.__proto__

畫出如下代碼的原型圖

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('前端');
面向?qū)ο笤蛨D

創(chuàng)建一個(gè) Car 對象烟具,擁有屬性name、color奠蹬、status朝聋;擁有方法run,stop罩润,getStatus

function Car(name, color, status) {
    this.name = name
    this.color = color
    this.status = status

    this.run = function () {
        if (this.status === 1) {
            console.log('I am running')
        }
    }

    this.stop = function () {
        if (this.status === 0) {
            console.log('I am stopped')
        }

    }

    this.getStatus = function () {
        console.log(this.status)
    }
}

var myCar = new Car('Audi', 'black', '1')
myCar.getStatus()

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

  1. ct屬性金度,GoTop 對應(yīng)的 DOM 元素的容器
  2. target屬性, GoTop 對應(yīng)的 DOM 元素
  3. bindEvent 方法严沥, 用于綁定事件
  4. createNode 方法猜极, 用于在容器內(nèi)創(chuàng)建節(jié)點(diǎn)

代碼
預(yù)覽

使用木桶布局實(shí)現(xiàn)一個(gè)圖片墻

瀑布流布局與木桶布局


參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末受扳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兔跌,更是在濱河造成了極大的恐慌勘高,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坟桅,死亡現(xiàn)場離奇詭異华望,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)仅乓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門赖舟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夸楣,你說我怎么就攤上這事宾抓。” “怎么了裕偿?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵洞慎,是天一觀的道長。 經(jīng)常有香客問我嘿棘,道長劲腿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任鸟妙,我火速辦了婚禮焦人,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘重父。我一直安慰自己花椭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布房午。 她就那樣靜靜地躺著矿辽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袋倔,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天雕蔽,我揣著相機(jī)與錄音,去河邊找鬼宾娜。 笑死批狐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的前塔。 我是一名探鬼主播嚣艇,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼华弓!你這毒婦竟也來了食零?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤该抒,失蹤者是張志新(化名)和其女友劉穎慌洪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凑保,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冈爹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了欧引。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片频伤。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖芝此,靈堂內(nèi)的尸體忽然破棺而出憋肖,到底是詐尸還是另有隱情,我是刑警寧澤婚苹,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布岸更,位于F島的核電站,受9級特大地震影響膊升,放射性物質(zhì)發(fā)生泄漏怎炊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一廓译、第九天 我趴在偏房一處隱蔽的房頂上張望评肆。 院中可真熱鬧,春花似錦非区、人聲如沸瓜挽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽久橙。三九已至俄占,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淆衷,已是汗流浹背颠放。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吭敢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓暮芭,卻偏偏與公主長得像鹿驼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子辕宏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355