/*
* js的對象是一種無序集合數據類型,由一種鍵值對組成,用來
* 描述現實世界中的某個對象
* 用{}表示一個對象,用鍵值對的形式去聲明,用逗號隔開,最後一個鍵值對後面不需要加逗號
*/
//創建方式
//1,json方法原生格式(對象直接量)
var obj = {name:"如花",agr:18,sex:"男",height:180,location:"香港"};
console.log(typeof obj,obj);
//2.通過構造方法
var obj01 = new Object();
obj01["name"] = "秋香";
obj01["age"] = "22";
obj01["sex"] = "女";
obj01.height = 170;
obj01.Location = "古代";
console.log(obj01);
//3.通過構造函數添加
function fun(){
this.name = "嫉";//在構造函數中,this指向構造函數的實例
this.sex = "女";
this.Location = "太美";
}
var obj02 = new fun();
console.log(typeof obj02,obj02);
var obj03 = {//對象的屬性名都是字符串,屬性值可以是任意的數據類型
name:"car",
color:["pink","green","red","white","black"],
barnd:"五菱宏光",
productor:"中國",
time:"2014",
price:"9999999999",
desigener:"藍海"
}
//訪問屬性(查)
console.log("name:"+obj03.name+",color:"+obj03.color[0]);//通過變量名"."屬性名去訪問屬性值
console.log("name:"+obj03["name"]+",color:"+obj03["color"][4]);//通過變量名["屬性名"]去訪問屬性值
console.log("others:"+obj03["others"]);//如果訪問不存在的屬性,不會報錯,返回undefined
console.log(obj03.length);//undefined 對象是無法獲取長度的
for(var i in obj03){//遍歷對象使用for/in
//i是屬性名
console.log(i+":"+obj03[i]);
}
//添加屬性(增)
obj03.others="其他描述";//通過"."操作符添加
obj03["color"][5]="orange";//通過["屬性名"]添加
console.log(obj03);
//修改屬性(改)
obj03["brand"]="AE86";
obj03.price = 66666;
console.log(obj03);
//刪除屬性(刪)
delete obj03.productor;//使用delete只能刪除自身屬性,不能刪除繼承屬性
delete obj03["color"][1];//delete刪掉數組中的某個元素之後,使用undefined補齊
console.log(obj03);
//檢測某一個變量是否包含某一個屬性(in , hasOwnProperty() , propertyIsEnumerable())
console.log("productor" in obj03);//false
//in 的左側是屬性名,右側是變量名(對象),不管是自身屬性還是繼承屬性,只要是對象的屬性就返回true
/*
* 自身屬性和繼承屬性:
* 自身屬性也叫本地屬性,是自定義的鍵值對
* 繼承屬性是_proto_裏面的方法
* 可枚舉性:
* js數據類型中自帶的原形(_proto_)屬性不可枚舉
*/
//hasOwnProperty()用來檢測給定的屬性名是否是對象的自身屬性,是返回true,對於繼承屬性,返回false
console.log(obj03.hasOwnProperty("name"));//true
//propertyIsEnumerable() 只有檢測到自身屬性並且這個屬性的可舉行爲true時,它才返回true
console.log(obj03.propertyIsEnumerable("colr"));
對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.