五、屬性遍歷與刪除
1、使用for…in…遍歷自定義對象屬性
基本語法:
for…in…(主要是完成對對象的遍歷)
示例代碼:
運行效果:
說明:在17行代碼,不能使用p1.i形式進行自定義對象屬性的遍歷,否則會彈出undefined,原因是因為當代碼識別到p1對象會認為p1.i是訪問p1對象的i屬性,由于沒有定義i屬性,所以系統會彈出3個undefined。
2、使用for…in…結構實現系統對象的遍歷
window
document
示例代碼:
運行效果:
3、屬性刪除操作
在Javascript,有時我們可能并不需要某個對象的某個屬性,這個時候我們可以采用delete關鍵詞實現對自定義屬性的刪除操作
基本語法:
delete對象.屬性
刪除指定屬性
示例代碼:
運行效果:
六、成員方法
1、基本語法:
對象.屬性 = 函數的首地址
例1:為對象添加speak說話方法
例2:創建對象p2,為p2添加speak說話方法
觀察以上代碼,與例1中的p1對象的成員方法完全一致,似乎代碼出現了重疊,改進上題
例3:改進上題
例4:由于以上代碼有很多重復性的代碼,那么我們可以對以上代碼進行封裝
七、json對象
1、什么是json
對象是指屬性的無序集合
所謂“集合”是指名/值對的集合,名/值對之間是通過 ,逗號隔開的
在js中,可以使用{}來表示這個集合
2、基本語法
var 變量 ={};
第一種:{‘屬性’:’屬性的值’, ‘屬性’:’屬性的值’, ‘屬性’:’屬性的值’}
第二種:{“屬性”:”屬性的值”, “屬性”:”屬性的值”, “屬性”:”屬性的值”}
第三種:{屬性:’屬性的值’,屬性:’屬性的值’,屬性:’屬性的值’,}
3、快速入門
例1:通過json對象描述一個人的信息
4、json對象從“何”而來
通過以上代碼可以證明:
json對象是Object類的一個實例,其實在Javascript中,Object類是所有類的基類,所有的對象都繼承了Object類的屬性。
json對象主要用于大批量數據的保存
例2:通過json對象保存多個人的信息
5、php與json
在php提供了兩個生成與解析json格式的函數
json_encode(數組或對象)
數組通常采用關聯性數組
json_decode(json格式字符串)
ajax xml
ajaj json
1)把數組轉化為json格式的數據
2 )把對象轉換成json格式的數據
說明:在json_encode函數中,目前只支持UTF-8,如果是GBK或GB2312請通過iconv進行轉化,否則無法使用或無法得到正常數據
3)把二維數組轉化為json格式數據
4)json_decode代碼解析
json_decode($json對象,[bool])
功能:把json格式數據反轉化
參數說明:
第一個參數是json格式數據
第二個參數是布爾類型的值,如果為true,則返回array數組類型的數據,如果是false或不填寫,則直接返回stdClass類的實例(對象)
不加true參數效果
案例:通過php+json完成對歷史上的今天api接口調用
http://www.juhe.cn/聚合數據
a)復制url地址http://japi.juhe.cn/toh/toh?key=您申請的KEY&v=1.0&month=11&day=1
參數說明
key:密鑰
v:版本1.0
month:月份
day:天
b)通過接口可知,其屬于get請求
效果如下:
6、為json對象添加成員方法
運行效果:
八、原型鏈
1、什么是原型對象?
答:當系統加載構造器時,系統會自動生成一個對象,我們把這個對象就稱之為原型對象。
構造器與原型對象在內存中是相互獨立的,但是其還有聯系:
在構造器中存在一個prototype屬性,指向原型對象
原型對象也存在屬性指向構造器
2、原型對象作用?
當構造器的實例訪問一個不存在的屬性時,系統會自動到構造器的原型對象中去尋找,如找到則直接使用。
當我們在某些已存在的框架或對象中找不到我們想要屬性或方法,我們可以借助原型對象,把需要的屬性或方法追加到原型對象。
3、如何向原型對象中添加屬性或方法
構造器.prototype.屬性=屬性的值
4、探討:原型對象到底從何而來
說明:當系統創建原型對象,系統會自動執行以下代碼
構造器.prototype = new Object();
由于原型對象都是Object類的實例,那么根據面向對象原則,我們的原型對象會自動繼承Object類中屬性和方法。
示例代碼:
說明:當我們運行到第14行,系統自動訪問p1對象的hasOwnPropery屬性,但由于系統中并不存在hasOwnProperty屬性,所以會到Person構造器的原型對象中去尋找,沒有找到,又由于所有的原型對象都是Object類的實例,所以原型對象會自動繼承Object類下面的所有的屬性和方法,所以發現該行代碼正常執行,原理圖如下:
我們把以上情況就稱之為原型繼承,通過以上圖解也可以證明,Object類是所有類的基類。
說明:在Javascript中,當某一個對象引用一個不存在屬性或方法時,系統首先到當前構造器的原型對象中去尋找,如還找不到,其會到上一層原型對象中去尋找,直至Object原型對象,我們把這種鏈接查找關系就稱之為原型鏈。
作業:擴展數組類的功能:(Array)
為每一個數組對象添加一個方法,可以查找某個元素的所在位置
var arr = [10,20,30,40,50];
arr.find(40);
2、擴展數字類的功能(Number)
為一個數字對象添加一個方法,該方法的參數為任意數目的整數,然后將所有參數累加到一起,并返回總和
vari = 10;
i.sum(10,30,40,50,60,60);