對象
一、定義
1、世間萬物都可以用對象表示
2、基于對象的編程語言中,用對象給真實的事物建模
組成:屬性 方法
二、Javascript對象介紹
1、對象是javascript的一種數據類型
2、對象是一種復合值 它將很多值聚合在一起,可通過名字訪問這些值。
3、對象也可以看做屬性的無序集合。每個屬性都是 名:值 對。
4、屬性名是字符串,我們可以把對象看成是從字符串到值的映射。
5、對象的其他叫法:散列(hash) 散列表(hashtable) 字典(direction) 關聯數組(associative array)
三、JavaScript對象分類
1、內置對象 如: 數組 函數 日期 正則 等...
2、宿主對象 htmlElement對象是Js的宿主瀏覽器的對象
? ? ? ? 瀏覽器中 window對象 (BOM 和 DOM)
? ? ? ? Node中 global 對象
3、自定義對象 用戶自定義的對象
四、對象的創建
1、使用對象直接量
? ? ? ? console.log({});
? ? ? ? console.log({list:[10,23,243]});
? ? ? ? var oop = {name:’大毛’,list:[1,2,3],getName:function(){}};
2、通過構造函數(new)創建對象
? ? ? ? var oop = new Array();
? ? ? ? var oop = new Function();
? ? ? ? var oop = new Object();
? ? ? ? console.log(oop);
3、通過Object.create(); --ECMA5定義的方法
? ? ? ? 傳入原型
? ? ? ? 不繼承構造函數和原型中的方法屬性
? ? ? ? var o = Object.create();
五、對象屬性值的獲取
.1、運算符
? ? ? ? ECMA老版本.for 或者.of 是非法 ECMA5放寬了限制,但是不建議使用
2、[ ] 運算符
? ? ? ? var oop={name:’lili’,age:12}
? ? ? ? document.write(oop.name);
? ? ? ? document.write(oop[‘name’]);
3、區別
? ? ? ? 當屬性名為變量時 只能使用[ ]
六、屬性修改或設置
? ? ? ? oop.name="abc";
? ? ? ? oop['name']="abc";
七、對象方法的調用
? ? ? ? var oop = {name:'aa',age:12,getInfo:function(a){
? ? ? ? ? ? ? ? document.write(a);return 100;}
? ? ? ? }
? ? ? ? oop.getInfo();
? ? ? ? oop.getInfo('aa');
八、全局對象window
1、預定義的對象 作用域鏈的頂層
2、用戶定義的變量是全局對象的屬性
3、用戶定義的函數是全局對象的方法
九、對象中的this
? ? ? ? 調用本方法的對象
十、刪除對象屬性或方法
? ? ? ? delete oop.age;
? ? ? ? delete getInfo;
十一、對象屬性的檢測
? ? ? ? 使用關鍵字 in document.write('name' in o);
十二、對象的直接量書寫方式 --json格式
? ? ? ? var oop = {
? ? ? ? ? ? ? ? name:’xx’,
? ? ? ? ? ? ? ? age:13,
? ? ? ? ? ? ? ? getInfo:function(){},
? ? ? ? ? ? ? ? "if":[],? ? ? ? ? ? ? ? ? ? //關鍵字使用引號
? ? ? ? ? ? ? ? "color":'黑色',
? ? ? ? ? ? ? ? "cpu-i5":1500? ? ? ? ? ? ? //帶-使用引號
? ? ? ? }
十三、對象的遍歷
? ? ? ?var o = {x:1,y:2,z:3}
1、使用 for in 遍歷出對象的屬性名
? ? ? ?for(var i in o){document.write(i)}
2、使用Object.keys(o) 將屬性名遍歷到數組中
十四、數據結構的認識
1、https://developers.douban.com/? ? 遠程數據API
2、http://api.douban.com/v2/movie/in_theaters
3、http://api.douban.com//v2/movie/coming_soon