JS对象中的属性
属性的分类
属性分为两大类:
私有属性
公有属性
可以通过一个api 来查看函数的属性 :hasOwnProperty(),如果是私有属性则为true; 如果是公有属性,则为false。
<script>
var obj = {
name:"gangwan",
age:10
};
console.log(obj.hasOwnProperty("name")); // true 查看name是否是obj的私有属性
console.log(obj.hasOwnProperty("age")); // true
console.log(obj.hasOwnProperty("__proto__")); // false
</script>
一个属性是私有属性还是公有属性,主要是看他对谁来说
添加属性
可以通过简单的赋值,向已存在的对象添加新属性。
person.nationality = "English";
删除属性
delete 关键词从对象中删除属性:
delete arr[0];
console.log(arr);
delete只能删除私有属性,不能删除公有属性
如果一个私有属性将共有属性覆重名 则会将那个公有属性覆盖
var a1 = ["a"]; console.dir(a1) a1.push("b") console.dir(a1) a1.push = function () { console.log("自己的push") } a1.push("c");
判断属性是否是属于一个对象
1.hasOwnProperty (判断是否是私有属性)
2.in (判断是否属于对象,不判断是公有属性还是私有属性)console.dir("age" in obj)
属性的特征
- configurable 表示是否可以被删除 true表示可以删除
- writable 表示是否可以修改 true表示可以修改
- enumerable 是否可以枚举 是否可以输出 true表示可以输出
- value 属性值 默认是und
通过Object.getOwnPropertyDescriptor 获取属性的特征
var obj = { age:"10" } console.log(Object.getOwnPropertyDescriptor(obj, "age")); // configurable: true // writable: true // enumerable: true // value: "10"
感谢阅读