天天看點

第205天:面向對象知識點總結

一、面向對象和傳統開發的差別

面向對象開發

  1. 分析需要的對象
  2. 分析每個對象需要的屬性和方法
  3. 依次實作每個對象
  4. 面向對象程式設計(直接使用封裝好的方法)

傳統開發四要素 – 牢記

  1. 定義變量儲存資料
  2. 擷取元素
  3. 綁定元素
  4. 綁定事件

二、json

JSON全稱為JavaScript對象簡單表示法(JavaScript Object Notation)

即通過字面量來表示一個對象,

從簡單到複雜均可使用此方式。

1、字面量建立的對象和json對象差別

第205天:面向對象知識點總結

2、json文法規範

Json雖然文法規則要求加個” ”,但是其實不加也是正确的。

字面量其實就是原型對象的一個執行個體。

我們在使用對象的字面量形式(json)的時候不需要再執行個體化。

3、json協定

json是一個協定,隻要我們将資料轉換成這個格式,就能實作傳輸,至于如何傳輸的,不必知道

4、Json協定和json對象有什麼關系

JSON協定事實上已經作為一種前端與伺服器端的資料交換格式,是一種國際标準。他不是語言,他隻是一個規範,按照這種規範寫法就能實作資料傳遞。

ajax,背景一般傳遞給我們的資料格式是json字元串,我們拿到資料之後,将其轉化成json對象,再做其他處理

5、json對象和字元串的轉換

将json對象轉化成json字元串

JSON.stringify(obj)将JSON轉為字元串

var aToStr=JSON.stringify(a);

将json字元串轉化成json對象

通過eval() 函數可以将JSON字元串轉化為對象。

JSON.parse(string)将字元串轉為JSON對象;

var bToObj=JSON.parse(b);

json是資料傳輸通用協定

三、XML

Xml隻是描述資料的一種結構

1、XML作用

樹結構存儲資料

文本資料庫

統一通信協定

不同平台之間通訊

html是xml的一種結構

前背景溝通的橋梁xml、 json

既可以用json 也可以用xml

Web前端開發 json更流行

2、Xml文法規則

  • 所有 XML 元素都須有關閉标簽
  • XML 标簽對大小寫敏感
  • XML 必須正确地嵌套
  • XML 文檔必須有根元素
  • XML 的屬性值須加引号

3、Json和xml的相同點和不同點

相同點:

都是一種通用協定

都可以用來描述資料

不同點:

JSON相對于XML來講,資料的體積小,傳遞的速度更快些。

xml專用帶寬大,json占用帶寬小

json沒有xml這麼通用

json可以和js對象互相轉換,和js是天生的一對,是以廣泛用于前端開發

XML已經被業界廣泛的使用,而JSON才剛剛開始,但是在Ajax這個特定的領域,未來的發展一定是XML讓位于JSON。到時Ajax應該變成Ajaj(Asynchronous Javascript and JSON)了

四、構造函數

1、構造函數和普通函數的差別

對象其實是使用函數實作的

對象本身就是一個函數

如果一個函數用于建立對象,我們一般稱之為構造函數。

2、構造函數四種建立方式

參數傳參

預設值

動态添加屬性

混合模式

3、構造文法規範

成員(屬性)定義規範:

this.name

成員(方法)定義規範:

this.buy=function(){

        alert('buy')

    }

屬性通路 - 點文法

4、Instanceof

如何判斷某個執行個體是否是根據某個構造函數建立的

If(p1 instanceof Product){

Alert(‘true)

}

js構造函數本身就是一個函數,是以擁有函數的一切的特性

如果return一個對象,則new的時候傳回的是return的對象

5、執行個體拷貝原理

記憶體配置設定會自動拷貝構造對象的所有屬性,并賦以執行個體的值

當你執行個體化一個對象,那麼記憶體中會開辟兩個記憶體區域:一個儲存執行個體名稱變量:其儲存的隻是位址

一個儲存對象的真正的資料

6、constructor

1,執行個體化的過程其實就是拷貝構造函數屬性的過程

2,除了拷貝以外還會自動生成一個constructor屬性,用于識别其是根據哪個構造函數建立的執行個體。

7、構造函數和原型對象的差別

構造函數建立的執行個體不能共享屬性和方法,浪費記憶體

原型對象中的工具被所有執行個體所共享

一般将大家都公有的東西放在原型對象中

每個執行個體獨特的不一樣的屬性放在構造函數中

五、雙對象法則

1、通過原型方式建立對象的原理

通過原型建立對象,其實建立的是兩個對象

構造函數對象

原型對象

當我們執行個體化的時候,該執行個體自動拷貝構造函數的所有屬性和方法,而對于原型對象,則不拷貝,而是通過一個屬性‘鐵鍊’

2、雙對象的名稱

構造函數對象的名稱:就是函數名稱

原型對象的名稱:古怪點:函數名稱.prototype

雙對象第一個對象:構造函數(對象)

構造函數對象中的屬性方法

構造屬性 方法

雙對象第一個對象:原型對象

原型

原型屬性 原型方法

3、hasOwnProperty() 方法

可以判定一個屬性是存在于構造對象的執行個體上還是原型對象上。該 方法繼承自 Object。

如果是執行個體對象—ture

如果是原型對象 – false

4、面向對象的三個作用

面向對象程式設計

描述資料 - -對象的字面量形式--json

封裝架構

5、建立對象的方式

字面量

Object

内置對象

構造函數

拷貝

工廠

第三方

6、面向對象三大對象

字元串,數組,日期,正則,數字,數學,錯誤,函數

BOM對象

windows ,document ,location ,history

自定義對象

HTTP是Hyper Text Transfer Protocol,超文本傳輸協定;

FTP是File Transfer Protocol,檔案傳輸協定;

簡單說HTTP是面向網頁的,而FTP是面向檔案的。

7、innerHTML與innerText

innerHTML與innerText的差別:

就是對HTML可以放置html代碼,Text不會輸出HTML代碼

Text隻有IE支援,不建議使用

alert(document.getElementById("p1").innerText);

alert(document.getElementById("p2").innerHTML);

8、new 的本質

當我們new 一個執行個體後,系統自動做了如下事情

建立一個空對象  var p = {}

拷貝構造函數中的方法屬性到空對象中

自動成生一個屬性_proto_指向類的原型p.__proto__ =  XXXX.prototype

9、Object對象是Function對象的一個執行個體

是以Object的__proto__屬性指向Function對象的原型

Object._proto_===Function.prototype

所有内置對象都是Function對象的執行個體

Object和 任何函數都是指向Function.prototype

五、面向對象三大特性

封裝

繼承

多态

繼承可以減少代碼重複

我們一般将相同的屬性放在父類中

自己獨特的屬性放在自身對象中

繼承就是定義一個新的對象,繼承另一個對象的方法和屬性

前面通過原型方式建立一個對象A,其可以使用Object中的所有屬性和方法,這裡我們就說A對象繼承了Object對象。

繼承的本質就是通過__proto__指針指向某個對象,系統能夠自動鍊式通路所指向的對象的屬性方法

整個js世界都繼承自Object,都可以通路Object中的方法和屬性。

是以,Object是所有對象的祖先,是生命誕生的鼻祖

所有的内置對象都繼承在Object,除了擁有自身的方法和屬性之外,還擁有Object的所有屬性和方法