1、面向對象編程 一、用對象的思想去寫代碼,就是面向對象編程 二、寫法:1) 過程式寫法 2) 面向對象寫法 三、面向對象編程(OOP)的特色: 1) 抽象:抓住核心問題 2) 封裝:只能經過對象來訪問方法 3) 繼承:從已有對象上繼承出新的對象 4) 多態:多對象的不一樣形態,不一樣的對象,收到同一消息能夠產生不一樣的結果,這種現象稱爲多態性。 四、對象的組成 1) 方法——動態 對象下面的函數:叫作對象的方法 2) 屬性——靜態 對象下面的變量:叫作對象的屬性2、工廠方式 工廠方式 : 就是面向對象的封裝函數 返回值 : 當new去調用一個函數:這個時候函數中的this就是建立出來的對象,並且函數的返回值直接就是this(隱式返回) 構造函數 : 用來建立對象函數就是構造函數3、原型 一、原型:去改寫對象下面公用的方法或屬性,讓公用的方法或屬性在內存中存在一份(提升性能) 二、原型prototype: 要寫在構造函數的下面 三、寫法: function 構造函數(){ this.屬性 }; 構造函數.原型.方法 = function (){ }; // 面向對象的使用 var 對象1 = new 構造函數(); 對象1.方法(); 四、原型鏈:實例對象與原型之間的鏈接,叫作原型鏈(_proto_隱式鏈接) 其基本思想是利用原型讓一個引用類型繼承另外一個引用類型的屬性和方法 經過原型鏈查找,一層一層的往上找。那麼原型鏈的最外層是:Object prototype4、包裝對象:基本類型都有本身對應的包裝對象:String、Number、Boolean 過程 : 基本類型會找到對應的包裝對象類型,而後包裝對象把全部的屬性和方法給了基本類型,而後包裝對象消失 var str = 'hello'; alert(str.charAt(1)); // 當執行這行代碼時,基本類型找到對應的包裝對象String.prototype.charAt = function (){},而後把包裝對象把全部的屬性和方法給了基本類型,接着包裝對象消失5、面向對象的經常使用屬性和方法 一、hasOwnProperty(): 看是否是對象自身下面的屬性 (通常是作判斷用) 返回值:布爾值 二、constructor : 查看對象的構造函數 能夠用來作判斷 1) 每一個原型都會自動添加constructor屬性:構造函數.prototype.constructor = 構造函數,同時也可進行修改函數自身的constructor屬性 2) for in的時候系統自帶的屬性是找不到的 function Aaa(){}; Aaa.prototype.constructor = Aaa; // 系統自帶的屬性 for(var attr in Aaa.prototype){ alert(attr); // 沒法找到 } 三、用constructor也能夠檢測對象類型 var arr = []; alert(arr.constructor == Array); // true 三、instanceof(運算符): 對象與構造函數在原型鏈上是否有關係,也能夠檢測對象 返回值 : 布爾值 function Aaa(){}; var a1 = new Aaa(); alert(a1 instanceof Aaa); // a1這個實例對象與建立的構造函數Aaa在原型鏈上有關係,返回true 能夠經過instanceof檢測是不是對象 var arr = []; alert(arr instanceof Array); // true 四、toString() 咱們先來檢測一下toString()在哪裏: var arr = []; // 系統對象 : 咱們把系統自帶的對象,叫作系統對象 alert(arr.toString == Object.prototype.toString) // false function Aaa(){}; var a1 = new Aaa(); alert(a1.toString == Object.prototype.toString) // true 經過檢測咱們發現:系統對象下面都是自帶的,本身寫的對象都是經過原型鏈找Object下面的 做用:一、把對象轉換成字符串 二、能夠傳入一個參數(進制) 三、利用toString作類型的判斷 (最好用的一種檢測對象的方法) Object.prototype.toString.call();8、繼承 一、繼承:在原有對象的基礎上,略做修改,獲得一個新對象不影響原有對象的功能 二、繼承的形式:(要作屬性和方法繼承的時候,要分開繼承) 1) 屬性的繼承:調用父類的構造函數 call 2) 方法的繼承:一、拷貝繼承 for in(jquery 也是採用拷貝繼承) 二、類式繼承:利用構造函數(類)繼承的方式 類:JS是沒有類的概念,可是咱們能夠把JS中的構造函數看作的類 三、 原型繼承:藉助原型來實現對象繼承對象9、組件開發 組件開發 : 是對象的多種表現形式,提升對象的複用性,包括UI組件和功能組件(UI組件是效果,功能組件是具體的功能),將配置參數、方法、事件三者進行分離。 自定義事件 : 組件開發中的事件是指自定義事件,主要是跟函數有關係,就是讓函數可以具有事件的某些特性,有利於多人協做開發 存在的問題:一、當參數不寫的狀況下會報錯 二、當傳遞的參數有些傳遞有些不傳遞時,會出現順序問題