一、面向對象和傳統開發的差別
面向對象開發
- 分析需要的對象
- 分析每個對象需要的屬性和方法
- 依次實作每個對象
- 面向對象程式設計(直接使用封裝好的方法)
傳統開發四要素 – 牢記
- 定義變量儲存資料
- 擷取元素
- 綁定元素
- 綁定事件
二、json
JSON全稱為JavaScript對象簡單表示法(JavaScript Object Notation)
即通過字面量來表示一個對象,
從簡單到複雜均可使用此方式。
1、字面量建立的對象和json對象差別

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的所有屬性和方法