JS高階 複習

2022-02-23 23:01:33 字數 1886 閱讀 8415

面向過程和物件導向都是程式設計的思想, 方式不一樣

面向過程: 凡事都是親力親為, 所有的**都要自己寫, 每一步都要很清楚, 注重的是過程

物件導向: 執行者成為指揮者, 只要找物件, 然後讓物件做相關的事情, 注重的是結果

物件導向的特性: 封裝, 繼承, 多型

封裝;就是**的封裝, 把一些特徵和行為封裝在物件中

物件導向的程式設計思想: 根據需求, 抽象出相關的物件, 總結物件的特徵和行為, 把特徵變成屬性,行為變成方法, 然後定義(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.方法();---->例項物件可以直接呼叫原型中的屬性或者方法

JS高階 複習

每個例項物件中都有乙個屬性 proto 是原型,瀏覽器使用的,不標準的屬性 每個建構函式中都有乙個屬性prototype,是原型,程式設計師使用的 物件導向和面向過程都是程式設計思想 物件導向注重的是結果,面向過程注重的是過程 物件導向的特性 封裝,繼承,多型 1.通過原型實現繼承,改變原型的指向,...

複習 JS基礎

以下算是經典的入門演算法吧,還記得第一次接觸時,感覺難得要命,現在來看,也不過如此!1 如果今天是星期六,那麼1000天後是星期幾?用一條語句計算出來。var a 1000 7 6 7 alert a 2 使用者輸入乙個三位數,用程式計算三位數字的和。比如 使用者輸入155,就彈出11 使用者輸入3...

js複習筆記

isnan x 1.判斷結果不是純數字,var a 1234 var b isnan a b是 false 因為a是純數字 var a abc123 var b isnan a b是 true 因為a不是純數字 match abcd 1.判斷該字串中是否包含 abcd undefined是訪問乙個未...