javascript

来源:互联网 发布:数据分析员职业规划 编辑:程序博客网 时间:2024/06/03 15:58

1 Object属性

1.1 属性描述符(descriptor)

var a = {};Object.defineProperty(a,'prop1',{    value:'test',    writable:true,    enumerable:false,    configurable:false})
  1. value(undefined):属性值
  2. writable(false):属性值是否可被重写。
  3. enumerable(false):是否可枚举(使用for…in或Object.keys())。
  4. configurable(false):是否可删除/配置。
    • 是否可以删除此属性。当为false时,无法使用delete操作符删除属性。
    • 是否可以使用Object.defineProperty对属性进行配置。当为false时,使用此方法更改配置则会报错。若配置与更改前一样,则不会发生错误,但没有必要。

1.2 存取器描述

var a = {};var initValue = 'hello';Object.defineProperty(a,'prop1',{    get:functin(){        return initValue;    }    set:function(value){        initValue = value;    }    enumerable:false,    configurable:false})
  1. get/set不必成对出现。
  2. get/set 与 value/writable不能共存。

一个属性描述的一览表http://blog.csdn.net/zjoops/article/details/53761629
这里写图片描述


2 Object方法

2.1 assign()

Object.assign(target, ...descriptors)
说明:拷贝所有可枚举自有属性值到目标对象中,并返回。
参数:
- target(必须):返回的目标对象。
- descriptors(可选):被拷贝对象,可接收多个。
其他:
1. 拷贝过程是调用被拷贝对象的getter并在目标对象使用setter,以此实现拷贝。
2. 当返回目标对象某个属性为不写而合并时会报错。


2.2 create()

Object.create(prototype, descriptor)
说明:创建一个具有指定原型且可选择性地包含指定属性的对象。
参数:
- prototype(必须):原型对象,可以为null表示没有原型。
- descriptors(可选):包含一个或多个属性描述符的 JavaScript 对象。

var res = Object.create(null, {    foo: {        value: 'foo',        writable: false    },    bar: {        value: 'bar',        enumerable: true    }});//{bar:'bar'}

2.3 defineProperties()

Object.defineProperties(obj, props)
说明:在一个对象上定义新的属性或修改现有属性,并返回该对象。
参数:
- obj:将要被添加属性或修改属性的对象。
- props:一个或多个属性描述符对象。


2.4 defineProperty()

Object.defineProperty(obj,prop,descriptor)
说明:在一个对象上定义一个新的属性或修改一个现有属性,并返回该对象。
参数:
- obj:将要被添加属性或修改属性的对象。
- prop:添加或修改属性的key。
- descriptor:属性描述符。


2.5 freeze()

Object.freeze(obj)
说明:返回被冻结的对象。冻结是指不能向这个新对象:
1. 添加新属性
2. 修改已有属性值
3. 删除属性
4. 修改已有属性的属性描述
总结来说就是这个对象永远不可变。
参数:将要被冻结的对象。


2.6 getOwnPropertyDescriptor()

Object.getOwnPropertyDexcriptor(obj,prop)
说明:返回指定对象上一个自由属性对应的属性描述符。
参数:
- obj:在该对象上查看属性。
- prop:对象上自由属性名。


2.7 getOwnPropertyNames()

Object.getOwnPropertyNames(obj)
说明:获取一个对象的所有自有属性名(包括不可枚举属性)组成的数组。
参数:
- obj:获取属性的对象。


2.8 getPrototypeOf()

Object.getPrototypeOf(object)
说明:返回指定对象的原型,即,内部[[Prototype]]属性的值。
参数:要返回原型的对象。

2.9 is()

Object.is(value1,value2)
说明:判断两个值是否是相同的值。
参数:略

2.10 isExtensible()

Object.isExtensible(obj)
说明:判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)。
参数:略

2.11 isFrozen()

Object.isFrozen(obj)
说明:判断一个对象是否被冻结。
参数:略

2.12 isSealed()

Object.isSealed(obj)
说明:判断一个对象是否被密封(sealed)。
- 密封对象是指哪些补课扩展的,且自身属性都不可配置的且属性不可删除的对象(其实是科写的)。
参数:略


2.13 keys()

Object.keys(obj)
说明:返回一个对象的自身可枚举属性组成的数组。属性名顺序与使用for in顺序一致。区别是for in会枚举原型链上的可枚举属性。
参数:略

2.14 preventExtensions()

Object.preventExtensions(obj)
说明:使某一对象不可扩展,也就是不能添加新的属性。
参数:略

2.15 seal()

Object.seal(obj)
说明:密封一个对象。
参数:略

2.16 setPrototypeOf()

Object.setPrototypeOf(obj,prototype)
说明:设置某一对象的原型(例如,内置的[[Protptype]]属性)为另一个对象或null。
参数:
- obj:要设置其原型的对象。
- prototype:该对象的新原型(一个对象或null)

3 Object.prototype

0 0