JS对象基本用法

111 阅读1分钟

JS对象基本用法

1.声明对象的语法

声明对象的语法主要有两种:

let obj = {'name':'jack', 'age':'20'} //简易写法(推荐这么写,比较简单)
let obj = new Object({'name':'frank'}) //正规写法(比较少人用,但是需要了解)

注意事项:

  • 以上语句的nameage为键名(key),是对象的属性名。均为字符串,可以包含任何字符,比如空格、emoji表情、中文等等。
  • jack20为对象的属性值(value)
  • 引号可以省略,但是省略之后,只能按照标识符的规则来写
  • 省略引号以后,键名还是字符串。

2.对象属性的增删改查

2.1-删除对象属性

  • 语法:delete obj.属性名delete obj['属性名']
  • 检验删除是否成功:'属性名' in obj ,返回false则表示删除成功。
  • 不包含属性名和**属性值为undefined**不一样。

2.2-查看对象属性

  • 查看自身所有属性:Object.key(obj)
  • 查看自身+共有属性:console.dir(obj),或者依次用Object.keys打印出obj.__proto__
  • 判断一个属性是自身还是共有的:obj.hasOwnProperty('toString')

2.3-修改或增加对象属性

2.3.1-直接赋值

let obj = {name:frank}
obj.name = 'frank'
obj['name'] = 'frank'
obj['na'+'me'] = 'frank'

2.3.2-批量赋值

Object.assign(对象名, { 属性名1:属性值1, 属性名2:属性值2, 属性名3:属性值3, ...})

2.3.3-修改隐藏属性,推荐使用Object.create

let obj = Object.create(common);
obj.name = 'frank';
let obj2 = Object.create(common);
obj2.name = 'jack';

3.'name' in obj和obj.hasOwnProperty('name')的区别

  • in运算符会检查指定对象的属性和原型链,hasOwnProperty()不会检查原型链
  • 即使属性的值是 nullundefined,只要属性存在,hasOwnProperty 依旧会返回 true