JS对象

84 阅读2分钟

key

注意:对象的key一定是字符串,可以是任意字符串(符号、字符表情等)。

创建对象

let obj = {};
let obj2 = new Object();

使用delete属性

obj = {name:'xiaoming',age:18}
delete obj['name']
delete obj.age

删除之后对应的key:value就都不存在了

对已经存在的值进行重新赋值

let obj = {name:'xiaoming'}
obj.name = 'xiaohong'
obj['name']='daming'
Object.assign(obj,{age:18,gender:'男'}) //批量更改/设置对象的key value

改的操作都适用增本身存在则改不存在则增加

Object.keys(obj);//查看所有key
Object.entries(obj)//以数组的形式打印对象的key:value
'name' in obj//查看obj以及原型上是否有name属性
obj.hasOwnProperty("name")//查看自身是否有name属性
obj['name'] //获取到obj中对应的name属性
obj.name

给对象创建原型

obj = Object.create({}) //设置obj对象的原型

Object.defineProperties()

Object.defineProperties() 方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象。

参数

obj

在其上定义或修改属性的对象。

props

要定义其可枚举属性或修改的属性描述符的对象。对象中存在的属性描述符主要有两种:数据描述符和访问器描述符(更多详情,请参阅Object.defineProperty())。描述符具有以下键:

configurable

true 当且仅当该属性描述符的类型可以被改变并且该属性可以从对应对象中删除。 默认为 false

enumerable

true 当且仅当在枚举相应对象上的属性时该属性显现。 默认为 false

value

与属性关联的值。可以是任何有效的JavaScript值(数字,对象,函数等)。 默认为 undefined.

writable

true当且仅当与该属性相关联的值可以用assignment operator改变时。 默认为 false

get

作为该属性的 getter 函数,如果没有 getter 则为undefined。函数返回值将被用作属性的值。 默认为 undefined

set

作为属性的 setter 函数,如果没有 setter 则为undefined。函数将仅接受参数赋值给该属性的新值。 默认为 undefined

例子

var obj = {};
Object.defineProperties(obj, {
  'property1': {
    value: true,
    writable: true
  },
  'property2': {
    value: 'Hello',
    writable: false
  }
  // etc. etc.
});