JS 繼承

1.原型鏈繼承:prototype

var p1 = new Person()

Person.prototype.(method_name) = function() {
  // ...
}

Person.prototype.(method_name_2) = function() {
  // ...
}

p1.(method_name)()
p1.(method_name_2)()

// 確定就是方法很多的時(shí)候會(huì)造成代碼冗余

2.原型鏈繼承2:prototype

Person.prototype = {
  // constructor 重要餐禁!
  constructor: Person,
   (method_name): function() {
     // ...
   }
}

var p1 = new Person()
p1.(method_name)()

/** 注意:
1. 一般情況下鱼喉,應(yīng)該先改變?cè)蛯?duì)象狸膏,在創(chuàng)建對(duì)象
2.一般情況下,對(duì)于新原型典阵,會(huì)添加一個(gè)constructor屬性,從而不破壞原有的原型對(duì)象的結(jié)構(gòu)
*/
注意:JavaScript的類繼承其實(shí)本質(zhì)還是用原型繼承來包裝的

3.拷貝繼承(混入繼承)

var p1 = {age: 18}
var p2 = p1;
p2.age = 20;
// 上面代碼p1的age也會(huì)被修改了莱衩,因?yàn)閜1,p2是同一對(duì)象

// 如果想使用某個(gè)對(duì)象中的屬性绰筛,又不能直接修改,就可以創(chuàng)建一個(gè)該對(duì)象的拷貝
// jquery: $.extend: 編寫jquery插件的必經(jīng)之路
// 拷貝繼承(混入繼承)
var p1 = {name: 'T1', age: 18}

// 實(shí)現(xiàn)拷貝繼承
var p2 = {}

for (var key in p1) {
  var value = p1[key];
  p2[key] = value;
}

p2[age] = 22;
// ...

es6 提供了<對(duì)象擴(kuò)展運(yùn)算符>

var p1 = {name: 'T1', age: 18}
var p2 = {...p1}
// or
var p3 = {...p1, age: 22}

4.原型式繼承

// 場(chǎng)景:
// 創(chuàng)建一個(gè)純潔的對(duì)象
// 創(chuàng)建一個(gè)繼承自某個(gè)父對(duì)象的子對(duì)象 
var p1 = {name: 'T1', age: 18}
var p2 = Object.create(p1);

5.借用構(gòu)造函數(shù)繼承

function Person(name, age) {
  this.name = name
  this.age = age
} 

function Student(name, age, sex) {
  // 將Person函數(shù)內(nèi)部的this指向Student的實(shí)例
    Person.call(this, name, age)
  // or (等價(jià)于)
  Person.apply(this, [name, age, sex])
    this.sex = sex
}

var p1 = new Student('T1', 22, '男')
// ...
// 局限性: Person(父類構(gòu)造函數(shù))的代碼必須完全適用于Student(子類構(gòu)造函數(shù))

6.寄生繼承

7.寄生組合繼承

閉包

1.認(rèn)識(shí)閉包

function fn() {
  var a = 5;
  return function() {
    a++;
    console.log(a);
  }
}

var f1 = fn();
f1();   // 6
f1();   // 7
f1();   // 8

// 一般認(rèn)為函數(shù)執(zhí)行完畢逐工,變量就會(huì)釋放铡溪,但是此時(shí)由于js引擎發(fā)現(xiàn)匿名函數(shù)要使用a變量,所以a變量并不能得到釋放泪喊,而是把a(bǔ)變量放到匿名函數(shù)可以訪問到的地方去了
// a變量存在于f1函數(shù)可以訪問到的地方棕硫,此時(shí)a變量只能被f1訪問
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市窘俺,隨后出現(xiàn)的幾起案子饲帅,更是在濱河造成了極大的恐慌,老刑警劉巖瘤泪,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異育八,居然都是意外死亡对途,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門髓棋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來实檀,“玉大人,你說我怎么就攤上這事按声∩庞蹋” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵签则,是天一觀的道長(zhǎng)须床。 經(jīng)常有香客問我,道長(zhǎng)渐裂,這世上最難降的妖魔是什么豺旬? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮柒凉,結(jié)果婚禮上族阅,老公的妹妹穿的比我還像新娘。我一直安慰自己膝捞,他們只是感情好坦刀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般鲤遥。 火紅的嫁衣襯著肌膚如雪沐寺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天渴频,我揣著相機(jī)與錄音芽丹,去河邊找鬼。 笑死卜朗,一個(gè)胖子當(dāng)著我的面吹牛拔第,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播场钉,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼蚊俺,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了逛万?” 一聲冷哼從身側(cè)響起泳猬,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宇植,沒想到半個(gè)月后得封,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡指郁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年忙上,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闲坎。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疫粥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腰懂,到底是詐尸還是另有隱情梗逮,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布绣溜,位于F島的核電站慷彤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏涮毫。R本人自食惡果不足惜瞬欧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罢防。 院中可真熱鬧艘虎,春花似錦、人聲如沸咒吐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至候生,卻和暖如春同眯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背唯鸭。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工须蜗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人目溉。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓明肮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親缭付。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柿估,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • 例子 我們生成兩個(gè)構(gòu)造函數(shù),后面的例子都是讓‘’貓‘’繼承‘’動(dòng)物‘’的所有屬性和方法陷猫。 動(dòng)物(為了更好的理解各種...
    流光號(hào)船長(zhǎng)閱讀 325評(píng)論 0 1
  • 我是誰,我來自哪,我是誰的誰 想必大家一定在學(xué)習(xí)或者開發(fā)過程常常被JS獨(dú)有的原型繼承撥過不少腦弦吧,為何不迎問題而...
    俗三瘋閱讀 318評(píng)論 0 2
  • 本篇文章會(huì)分別從ES5和ES6的角度上來學(xué)習(xí)JS的繼承秫舌。 由于js不像java那樣是真正面向?qū)ο蟮恼Z言,js是基于...
    充滿正能量的灰灰閱讀 449評(píng)論 0 2
  • 胡曉會(huì) 河南漯河 網(wǎng)絡(luò)初級(jí)九期學(xué)員 2019.2.15堅(jiān)持分享第356天 接納才有溝通绣檬,溝通才有合作足陨,合作才有改變...
    胡曉會(huì)閱讀 430評(píng)論 0 1
  • 小小是一只甲魚,我們相識(shí)于高二的一個(gè)周末娇未。當(dāng)時(shí)你和你的同伴被姑父從外邊買回來钠右,準(zhǔn)備煲湯!我看你個(gè)頭只有巴掌大忘蟹,靈巧...
    大寶媽咪娜娜閱讀 425評(píng)論 0 2