標籤:動態添加 als 建立對象 http man 變數 strong efi for
建立對象、原型鏈
1.屬性可以動態添加或刪除(如:object.a="";object.b="")
2.prototype是對象的一個屬性,當new一個對象時,賦給prototype的值就會被找到(如果沒有會繼續尋找上一級,直到再也找不到為止,即尋找原型鏈),例:
屬性操作
1.擷取對象中的值,可以用key(如:object["x"+1],多用於拼接訪問object中x1,x2,x3等值),也可以直接用object.x來進行操作(無需拼接)
2.遍曆取值:for(p in obj){ obj[p]; }(順序不確定,會帶著原型鏈上的屬性)
3.運算子&使用:var yz = obj&&obj.y&&obj.y.z(如果obj是undefined則返回undefined,直到如果obj.y.z都存在,會返回z的值。注意順序,如果順序有誤,如obj本身不存在,卻要取obj.y,就會報錯)
4.刪除屬性delete obj.z/delete obj["z"](返回true),重複刪除已刪除的屬性,還會返回true(delete的方法不會影響原型的屬性,隻影響當前的屬性)
5.delete Object.prototype會返回false,不允許刪除
6.var定義的全域或局部變數都不能被刪除,會返回false(函數也同理)
7.檢測屬性是否存在的方法:in。如:
var cat = new Object;cat.legs=4;‘legs‘ in cat;//返回true‘abc‘ in cat;//返回false
8.hasOwnProperty用來檢測當前定義的變數的屬性,比如:
cat.hasOwnProperty(‘legs‘);//返回truecat.hasOwnProperty(‘toString‘);//返回false(因為tostring是繼承Object原型鏈上的屬性,不能被取到)
9.嚴格不等於符號:!==
get/set方法
1.舉例
var man = { name:‘Bosn‘, weibo:‘@Bosn‘, get age(){ return new Date().getFullYear()-1988; }, set age(val){ console.log(‘Age can\‘t be set to‘+val); }}//訪問manconsole.log(man.age);//28man.age = 100;//Age can‘t be set to 100console.log(man.age);//27
2.在原型上添加configurable:true,可以使裡面的值變為可配置(也可以刪除)
屬性標籤
1.屬性標籤的定義
Object.defineProperty(person,‘name‘,{ configurable:false, writable:false, enumerable:true, value:"Bosn Ma"});//調用person.name;//Bosn Maperson.name=1;person.name;//still Bosn Madelete person.name;//false
2.屬性值與修改等之間的關聯
對象標籤、對象序列化(略)
4、對象