JS对象的基本用法

315 阅读2分钟

1.声明对象的两种语法

1.1写法

let obj = {'name':'frank','age':18}/*简写*/
let obj = new Object{'name':'frank'}/*正规写法*/

1.2细节

  1. 键名是字符串,不是标识符,可以包含任何字符
  2. 引号可以省略,省略之后就只能写标识符
  3. 就算引号省略了,键名也还是字符串 总之,键名只能是字符串,就算不是字符串,最后也会变成字符串

2.如何删除对象的属性

2.1语法

delete obj.xxx
delete obj['xxx']

2.2举例

image.png

3.如何查看对象的属性

3.1查看自身属性

  1. 语法
Object.keys(obj)
Object.entries(obj)
  1. 举例

image.png

3.2 查看自身和共有属性

  1. 语法
console.dir(obj)
  1. 举例

image.png

3.3 两种查看属性的语法

  1. 中括号语法
obj['key']
  1. 点语法
obj.key
  1. 推荐 新人推荐使用中括号语法,因为点语法会误导人,让人以为key不是字符串。等自己确定不会弄混两种语法,再改用语法

4.如何修改或增加对象的属性

4.1 修改和增加自身属性

  1. 直接赋值

直接赋值修改或增加自身属性.PNG

  1. 批量赋值

批量赋值修改或增加自身属性.PNG

4.2 修改和增加共有属性

  1. 无法通过自身修改或增加共有属性 无法通过自身修改或增加共有属性.PNG

  2. 只能在原型里修改或增加原型上的属性

image.png

注意:一般修改原型,会导致很多问题,比如代码崩溃,代码异常。要是想改,只能一开始就改,中间改来改去会很麻烦

4.3 修改隐藏属性

  1. 删除原型
obj.__proto__ = null
  1. 不推荐使用_proto_

image.png

  1. 推荐使用Object.create

image.png

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

  1. 'name' in obj 是用来检查对象是否包含有属性名,这个属性名有可能是对象自身的属性,也可能是该对象的共有属性

image.png

  1. obj.hasOwnProperty('name')是用来检查对象自身是否包含属性名,这个属性名只能是自身的属性。

image.png