面向?qū)ο蟮娜筇匦?br />
封裝
所謂封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作,對不可信的進(jìn)行信息隱藏。封裝是面向?qū)ο蟮奶卣髦唬菍ο蠛皖惛拍畹闹饕匦浴?簡單的說,一個(gè)類就是一個(gè)封裝了數(shù)據(jù)以及操作這些數(shù)據(jù)的代碼的邏輯實(shí)體。在一個(gè)對象內(nèi)部,某些代碼或某些數(shù)據(jù)可以是私有的,不能被外界訪問。通過這種方式,對象對內(nèi)部數(shù)據(jù)提供了不同級別的保護(hù),以防止程序中無關(guān)的部分意外的改變或錯(cuò)誤的使用了對象的私有部分。
我們在vue項(xiàng)目中使用混入將公有代碼提出來,混入到每個(gè)需要的組件中,讓我們的代碼更簡潔
我們也可以將一些公用的方法,工具進(jìn)行封裝,達(dá)到代碼復(fù)用,讓我們的代碼更簡潔
繼承
所謂繼承是指可以讓某個(gè)類型的對象獲得另一個(gè)類型的對象的屬性的方法。它支持按級分類的概念。繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進(jìn)行擴(kuò)展。 通過繼承創(chuàng)建的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類”或“超類”。繼承的過程,就是從一般到特殊的過程。要實(shí)現(xiàn)繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實(shí)現(xiàn)。繼承概念的實(shí)現(xiàn)方式有二類:實(shí)現(xiàn)繼承與接口繼承。實(shí)現(xiàn)繼承是指直接使用基類的屬性和方法而無需額外編碼的能力;接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實(shí)現(xiàn)的能力;
實(shí)現(xiàn)繼承的幾種方式
call繼承
function a (){    this.c=111  }  function b(){    a.call(this)  }  let d = new b()  console.log(d.c) // 111上面代碼相當(dāng)于函數(shù)b繼承了函數(shù)a的私有屬性,通過改變父類的this實(shí)現(xiàn)繼承
原型繼承
 function a (){    this.c=111  }  a.prototype.getName=function(){    return '你好'  }  function b(){    // a.call(this)  }  b.prototype=new a()  b.constructor=b  let d = new b()  console.log(d.c) // 111  console.log(d.getName()) // 你好原型繼承通過將父類的實(shí)例賦值給子類的原型,這種方法子類可以繼承父類的私有方法也可以繼承父類的私有方法
寄生組合繼承
 function a (){    this.c=111  }  a.prototype.getName=function(){    return '你好'  }  function b(){    a.call(this)  }  b.prototype=Object.create(a.prototype)  let d = new b()  console.log(d.c) // 111  console.log(d.getName()) // 你好寄生組合繼承就是使用call繼承改變this,實(shí)現(xiàn)私有繼承私有,使用object.create實(shí)現(xiàn)公有繼承公有
es6 extends 繼承
class parent{    constructor(){      this.a=1    }    name(){      return 2    }  }  class child extends parent{      }  let A = new child()  console.log(A.a) // 1  console.log(A.name()) // 2            
新聞熱點(diǎn)
疑難解答
圖片精選