復習
面向程序和面向物件都是編程的思想, 方式不一樣 面向程序: 凡事都是親力親為, 所有的代碼都要自己寫, 每一步都要很清楚, 注重的是程序 面向物件: 執行者成為指揮者, 只要找物件, 然后讓物件做相關的事情, 注重的是結果面向物件的特性: 封裝, 繼承, 多型
封裝;就是代碼的封裝, 把一些特征和行為封裝在物件中 面向物件的編程思想: 根據需求, 抽象出相關的物件, 總結物件的特征和行為, 把特征變成屬性,行為變成方法, 然后定義(js)建構式, 實體化物件, 通過物件呼叫屬性和方法, 完成相應的需求.---編程的思想 物件: 具體特指的某個事物, 有特征(屬性)和行為(方法),物件可以看成是一坨無序屬性的集合如何創建物件?
通過呼叫new Object(), 還有{}, 自定義建構式創建物件的方式
1. 呼叫系統Object()----->創建出來的物件都是Object型別的, 不能很明確的指出這個物件是屬于什么型別 2. 字面量的方式{}----->只能創建一個物件(一次只能創建一個) 3.工廠模式創建物件----->----->推論---->自定義建構式的方式 自定義建構式(優化后的工廠模式)自定義建構式創建物件: 4件事
1.在記憶體中申請一塊空閑的空間, 存盤創建的物件 2.this就是當前實體化的物件 3.設定物件中的屬性和方法(為物件添加屬性和方法,為屬性和方法賦值) 4.把創建后的物件回傳 都是需要通過new的方式什么是原型?
建構式中有一個屬性prototype, 是原型, 程式員使用的 實體物件中有一個屬性__proto__, 是原型, 瀏覽器使用的, 不是很標準的, 實體物件中的__proto__指向的就是該實體物件中的建構式中的prototype 建構式中的prototype里面的屬性或者方法,可以直接通過實體物件呼叫 正常的寫法: 實體物件.__proto__才能訪問到建構式中的prototype中的屬性或者方法 per.__proto__.eat();//__proto__不是標準的屬性 per.eat(); 原型就是屬性, 而這個屬性也是一個物件 Person.prototype--->是屬性 Person.prototype.屬性或者Person.ptototype.方法() 本身在建構式中定義的屬性和方法, 當實體化物件的時候, 實體物件中的屬性和方法都是在自己的空間中存在的, 如果是多個物件, 這些屬性和方法都會在單獨的空間中存在,浪費記憶體空間, 所以, 為了資料共享, 把想要節省空間的屬性或者方法寫在原型物件中,達到了資料共享,實作了節點記憶體空間原型的作用之一: 資料共享,節省記憶體空間
原型的寫法:
建構式.prototype.屬性=值 建構式.prototype.方法=值---->函式.prototype,函式也是物件,所以,里面也有__proto__ 實體物件.prototype-------->實體物件中沒有這個屬性,只有__proto__(暫時的)簡單的原型的寫法
缺陷: --->新的知識點---->原型直接指向{}---->就是一個物件, 沒有構造器 建構式.prototype={ 切記: 如果這這種寫法, 要把構造器加上 };通過原型為內置物件添加原型的屬性或者方法----->原因:
系統的內置物件的屬性和方法可能不滿足現在需求, 所以, 可以通過原型的方式加入屬性或者方法, 為了方便開發 為內置物件的原型中添加屬性和方法, 那么這個內置物件的實體物件就可以直接使用了 String.prototype.方法=匿名函式; var str="哈哈"; str.方法();---->實體物件可以直接呼叫原型中的屬性或者方法轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/158690.html
標籤:JavaScript
上一篇:JS DOM屬性+JS事件
下一篇:[vue學習]快速搭建一個專案
