Javascript数据类型详解三
2016-07-21 21:42:05
163
Object对象的静态方法
遍历对象的属性的方法
- Object.keys() 只遍历可枚举的属性
- Object.getOwnPropertyNames() 除了可枚举的还返回不可枚举的
-
其他方法
(1)对象属性模型的相关方法Object.getOwnPropertyDescriptor():获取某个对象的某个属性的详细信息
var o = {p:”a”};
Object.getOwnPropertyDescriptor(o, ‘p’)Object.defineProperty(object, propertyName, attributesObject)获得某个对象的属性
Object.defineProperties() 定义某个对象的多个属性一次性修改多个属性
var o = Object.defineProperties({}, {
p1: { value: 123, enumerable: true },
p2: { value: ‘abc’, enumerable: true },
p3: { get: function () { return this.p1 + this.p2 },
enumerable:true,
configurable:true
}
});Object.getOwnPropertyNames() 得到某个对象的所有的属性
(2) 控制对象状态的方法
Object.preventExtensions():防止对象扩展。
Object.isExtensible():判断对象是否可扩展。
Object.seal():禁止对象配置。
Object.isSealed():判断一个对象是否可配置。
Object.freeze():冻结一个对象。
Object.isFrozen():判断一个对象是否被冻结。(3) 原型链相关方法
Object.create():生成一个新对象,并该对象的原型。
Object.getPrototypeOf():获取对象的Prototype对象
Object实例对象的方法,主要有以下六个。
valueOf():返回当前对象对应的值。
toString():返回当前对象对应的字符串形式。
toLocaleString():返回当前对象对应的本地字符串形式。
hasOwnProperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。
isPrototypeOf():判断当前对象是否为另一个对象的原型。
propertyIsEnumerable():判断某个属性是否可枚举。
var o = {};
o.p = 123;
o.propertyIsEnumerable(‘p’) // true
o.propertyIsEnumerable(‘toString’) //false
属性描述对象详解
JavaScript提供了一个内部数据结构,用来描述一个对象的属性的行为,控制它的行为。这被称为“属性描述对象”(attributes object)
下面是属性描述对象的一个实例。
{
value: 123,
writable: false, 是否可改变属性的值
enumerable: true, 表示该属性是否可枚举,默认为true。如果设为false,会使得某些操作(比如for…in循环、Object.keys(),JSON.stringify())跳过该属性。
configurable: false, 可配置性(描述对象的可写性),如设为false,则无法删除该属性
当configurable为false的时候,value、writable、enumerable和configurable都不能被修改了。
get: undefined, 取值函数
set: undefined 存值函数
}