javascript 基礎(chǔ)攻關(guān)(二)—— 原型和原型鏈

javascript 基礎(chǔ)攻關(guān)(二)—— 原型和原型鏈

  1. 如何判斷一個變量是數(shù)組類型
  2. 寫一個原型鏈繼承的例子
  3. 描述new一個對象的過程

構(gòu)造函數(shù)

// 聲明構(gòu)造函數(shù)
function Foo(name, age) {
    this.name = name;
    this.age = age;
    this.class = "class-1";
    return this; //隱示創(chuàng)建
}
// 創(chuàng)建對象
var f =new Foo('yao',25);

構(gòu)造函數(shù)擴(kuò)展

  • var a = {} 其實是 var a = new Object()的語法糖
  • var a = [] 其實是 var a = new Array()的語法糖
  • function Foo(){...} 其實是 var Foo = new Function(){...}
  • 使用instanceof判斷一個函數(shù)是否是一個變量的構(gòu)造函數(shù)

原型規(guī)則

  1. 所有的引用類型(數(shù)組津函、對象、函數(shù))牍汹,都具有對象的特性悠鞍,即可以自由擴(kuò)展屬性(除了null
  2. 所有的引用類型(數(shù)組尚蝌、對象择浊、函數(shù))汰现,都有一個__proto__屬性(隱式原型)氛谜,屬性值是一個普通的對象
  3. 所有的函數(shù)指么,都有一個prototype屬性(顯式原型)酝惧,屬性值也是一個普通的對象
  4. 所有的引用類型(數(shù)組、對象伯诬、函數(shù))晚唇,__proto__屬性指向它的構(gòu)造函數(shù)的prototype屬性值
  5. 當(dāng)試圖得到一個對象的屬性時,如果這個對象本身沒有這個屬性姑廉,那么它回去它的__proto__(即它的構(gòu)造函數(shù)的prototype)中尋找

原型鏈

// 聲明構(gòu)造函數(shù)
function Foo(name, age) {
    this.name = name;
    this.age = age;
    this.class = "class-1";
    return this; //隱示創(chuàng)建
}
// 創(chuàng)建對象
var f =new Foo('yao',25);
f.toString()    要去f.__proto__.__proto__中查找缺亮,也就是它的構(gòu)造函數(shù)的object中找
2-8原鏈-0002.png

instanceof

f instanceof Foo的判斷邏輯是:

  1. f 的 __proto__ 一層一層往上,能否對應(yīng)到 Foo.prototype
  2. 再試著判斷 f instanceof Object

題目解答:

  1. 如何判斷一個變量是數(shù)組類型
```js
    var arr=[];
    arr instanceof Array;   //true
    typeof arr;     //Object, typeof 是無法判斷數(shù)組的
```
    這里要使用`instanceof` 而不是`typeof`桥言,`typeof`判斷出來是Object萌踱。
  1. 寫一個原型鏈繼承的例子

    ```js
    function Elem(id) {
        this.elem = document.getElementById(id)
    }
    
    Elem.prototype.html = function(val) {
        var elem = this.elem;
        if (val) {
            elem.innerHtml = val;
            return this; //鏈?zhǔn)讲僮?    } else {
            return elem.innerHtml;
        }
    }
    Elem.prototype.on = function(type, fn) {
        var elem = this.elem;
        elem.addEventListener(type, fn)
    }
    
    // 使用
    var div1 = new Elem('div1');
    console.log(div1.html());
    div1.html("<p>hello</p>");
    div1.on('click', function() {
        alert('clicked');
    })
    
    ```
    
  2. 描述new一個對象的過程

    1. 創(chuàng)建一個新對象
    2. this指向這個新對象
    3. 執(zhí)行代碼,對this賦值
    4. 返回this(隱式返回)

補(bǔ)充:

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末号阿,一起剝皮案震驚了整個濱河市并鸵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扔涧,老刑警劉巖园担,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件届谈,死亡現(xiàn)場離奇詭異,居然都是意外死亡弯汰,警方通過查閱死者的電腦和手機(jī)艰山,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咏闪,“玉大人曙搬,你說我怎么就攤上這事「肷” “怎么了纵装?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長据某。 經(jīng)常有香客問我橡娄,道長,這世上最難降的妖魔是什么癣籽? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任挽唉,我火速辦了婚禮,結(jié)果婚禮上才避,老公的妹妹穿的比我還像新娘橱夭。我一直安慰自己,他們只是感情好桑逝,可當(dāng)我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布棘劣。 她就那樣靜靜地躺著,像睡著了一般楞遏。 火紅的嫁衣襯著肌膚如雪茬暇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天寡喝,我揣著相機(jī)與錄音糙俗,去河邊找鬼。 笑死预鬓,一個胖子當(dāng)著我的面吹牛巧骚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播格二,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼劈彪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了顶猜?” 一聲冷哼從身側(cè)響起沧奴,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎长窄,沒想到半個月后滔吠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纲菌,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年疮绷,在試婚紗的時候發(fā)現(xiàn)自己被綠了翰舌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡矗愧,死狀恐怖灶芝,靈堂內(nèi)的尸體忽然破棺而出郑原,到底是詐尸還是另有隱情唉韭,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布犯犁,位于F島的核電站属愤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏酸役。R本人自食惡果不足惜住诸,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涣澡。 院中可真熱鬧贱呐,春花似錦、人聲如沸入桂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抗愁。三九已至馁蒂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜘腌,已是汗流浹背沫屡。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留撮珠,地道東北人沮脖。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像芯急,于是被迫代替她去往敵國和親勺届。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,666評論 2 350

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

  • 在JavaScript中志于,原型鏈作為一個基礎(chǔ)涮因,老生長談,今天我們就來深入的解讀一下原型鏈伺绽。 本章主要講的是下面幾點...
    Devinnn閱讀 1,398評論 1 6
  • 原型鏈?zhǔn)且环N機(jī)制养泡,指的是 JavaScript 每個對象都有一個內(nèi)置的 __proto__ 屬性指向創(chuàng)建它的構(gòu)造函...
    劼哥stone閱讀 4,408評論 15 80
  • 1.如何準(zhǔn)確判斷一個變量是數(shù)組類型 2.寫一個原型鏈繼承的例子 3.描述new一個對象的過程 4.zepto(或其...
    曉綾閱讀 5,755評論 0 1
  • 轉(zhuǎn)載請著名出處 GitHub-TYRMars 文章Github地址 JavaScript基礎(chǔ)知識剖析 01 01-...
    TYRMars閱讀 555評論 0 7
  • 又是一年春暖花開嗜湃。 路邊,已是偶見一樹繁花澜掩。短短幾日购披,垂柳吐翠,春花初綻肩榕,一年中最美麗的時節(jié)正在到來刚陡,而每到這時,...
    西蘇Sisu閱讀 392評論 0 0