面向對象

封裝

  1. 封裝函數,寫入參數,而後return出去
  2. 構造函數,內部使用this變量,經過使用new運算符生成實例,實例對象的constructor屬性指向他們的構造函數
  3. prototype,把那些不變的屬性和方法直接定義在prototype對象上,每個構造函數都有一個prototype屬性,指向另一個對象,這個對象的全部屬性和方法都會被構造函數的實例所繼承。

 

  • instanceof運算符 用於驗證原型對象與實例對象之間的關係;
  • hasOwnProperty('屬性')方法  用於判斷某一個屬性究竟是本地屬性仍是繼承自prototype對象的屬性;
  • in運算符 用於判斷某個實例是否含有某個屬性,無論是否是本地屬性,,,,,還能夠用於遍歷某個對象的全部屬性。 for in。

 

構造函數的繼承

對象之間的‘繼承方法’javascript

  1. 構造函數的綁定,經過call或apply方法
  2. prototype模式,A的原型對象指向B的實例,A則能夠繼承B
  3. 直接繼承prototype,A的原型對象指向B的原型,(優:效率較高,省內存;缺:A的原型修改會反映到B的原型)
  4. 利用空對象做爲中介,B的原型指向C的原型,A的原型指向B的實例
  5. 拷貝繼承,將B的原型的屬性和方法循環遍歷賦給A的原型
  • 任何一個原型對象都有一個constructor屬性,指向它的構造函數
  • 每個實例也有一個constructor屬性,默認調用prototype對象的constructor屬性
  • 若是替換的A的原型對象 則必須爲新的原型對象加上constructor屬性,並將這個屬性指回原來的構造函數

 

非構造函數的繼承

  1. object函數  即把子對象的prototype屬性指向父對象
  2. 淺拷貝 把父對象的屬性所有拷貝給子對象
  3. 深拷貝
  • 淺拷貝會出現問題,若是父對象的屬性爲數組或者另一個對象,那麼實際上子對象得到的只是一個內存地址,而不是真正拷貝

 

 

參考文章:html

相關文章
相關標籤/搜索