JavaScript入门基础--对象
1.对象也是变量,但对象可以包含多个值(多个变量)
对象属性:键值对 name : value,对象的属性是无序的
2.创建对象
① var obj = { x : 1, y : 1} ;
②new/原型链 : function foo(){}
var obj = new foo();
3.属性操作
例1: var obj = { x : 1, y : 2};
读: obj.x
obj ["y"]
增:obj.z = 3;
删:delete obj.x
delete obj [" y " ]
注:obj.prototype是不能被删除的
全局变量,局部变量,全局函数,局部函数 大多情况下都是不可以被 delete的
查:获取一个属性中的所有标签
var desc = Object.getOwnPropertyDescriptor ( Object , ' prototype ');
//Object:查看的对象, prototypr:要检测的属性
desc.configurable; //是否可配置,返回false或true
4.属性检测
例2:var cat = new Object;
cat.legs = 4;
cat.name = " kitty ";
in: 会(原型链)向上 查找 。
如: ‘legs’ in cat //返回 true ,
'aaa' in cat; //返回false ,
"toString" in cat ; // 返回true,inherited property
hasOwnProperty(): 查找对象上是否属性是否存在。
如:cat.hasOwnProperty(' legs '); // 返回true
cat.hasOwnProperty(' toString '); // 返回false
propertyIsEnumerable(): 属性是否可以被枚举 。
如:cat.propertyIsEnumerable('legs'); //true
cat.propertyIsEnumerable('toString');//false
defineProperty():添加对象属性
如:Object.defineProperty(cat, ' price ',{ enumerable : true, values : 10000 });
// cat:选择的对象,price:要添加的属性 enumberable: 是否可以被枚举,若不设置默认false
区别: if(cat.legs != undefined){} // 表示不等于 undefine,也不等于 null
if(cat.legs !== undefined){} // 表示不等于undefine
5.属性getter / setter方法
例3:
var man = {
get age(){
return 12;
},
set age( a ){
console.log('我的年龄' + a);
}
}
console.log(man.age);
//自动调用get()方法,返回12
man.age = 100; //自动调用set()方法
console.log(man.age); //我的年龄 100
6.属性标签
value: 值
writable:是否可以写嗯,修改.设置默认false
enumerable:是否可以被遍历,枚举,设置默认false
configurable:上述标签(writable,enumerable)是否可再修改,是否可以delete,设置默认false