JavaScript面試技巧(原型和原型鏈)

1.instanceof用於判斷引用類型屬於哪一個構造函數的方法。html

   那麼,咱們如何準確的判斷一個變量是數組類型呢?java

  var  arr = [];數組

  arr  instanceof  Array  //結果爲true,這樣判斷函數

   有的人可能會想到  typeof arr,但typeof是沒法判斷是不是數組類型的,包括objectthis

2.原型規則spa

 1)全部的引用類型(數組、對象、函數)都具備對象特性,便可以自由擴展屬性(除了「null」外)prototype

    2)全部的引用類型(數組、對象、函數)都有一個_proto_屬性,屬性值是一個普通的對象code

 3)全部的函數,都有一個prototype屬性,屬性值也是一個普通的對象htm

 4)全部的引用類型(數組、對象、函數),_proto_屬性值指向它的構造函數的prototype屬性值對象

 5)當試圖獲得一個對象的某個屬性時,若是這個對象自己沒有這個屬性,那麼會去它的_proto_(即它的構造函數的prototype)中尋找

 全部的引用類型都有一個_proto_屬性,全部的函數都有一個prototype屬性

3.描述new一個對象的過程

  • 建立一個新的對象
  • this指向這個新的對象
  • 執行代碼,即對this賦值
  • 返回this

4.寫一個原型鏈繼承的例子

 1 //一個封裝DOM查詢的例子
 2 function Elem(id){
 3     this.elem = document.getElementById(id)
 4 }
 5 
 6 Elem.prototype.html = function (val) {
 7     var elem = this.elem
 8     if (val) {
 9         elem.innerHTML = val
10         return this //鏈式操做
11     }else {
12         return elem.innerHTML
13     }
14 }
15 
16 Elem.prototype.on = function (type,fn) {
17     var elem = this.elem
18     elem.addEventListener(type,fn)
19     //return this
20 }
21 
22 var div1 = new Elem ('div1')
23 
24 div1.html('<p>hello 博客園</p>').on('click',function () {
25     alert('clicked')
26 })//.html('<p>javacsript</p>')
相關文章
相關標籤/搜索