珠峰培训

Javascript数据类型详解三

作者:wy

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 存值函数
}