JS 对象基本用法

68 阅读2分钟

JS的数据类型

目前js有八种数据类型:

  • 数值(number):整数和小数(比如13.14)。
  • 字符串(string):文本(比如Hello World)。
  • 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)。
  • undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。
  • null:表示空值,即此处的值为空。
  • 对象(object):各种值组成的集合。
  • symbol:符号
  • bigint:表示大于 `253 - 1` 的整数

object主要用法

对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型。

什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

声明对象例子:

var obj = {
  foo(键): 'Hello'(值),
  bar: 'World'
};
var obj = new Object({
  foo(键): 'Hello'(值),
  bar: 'World'
};
})

细节:

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

属性的增删改查

  • delete obj.xxx或delete obj['xxx'] 例子:
    image.png
  1. 查(读)
  • Object.keys(obj) 查自身的所有属性 例子:

image.png

  • console.dir(obj) 查自身/共有的所有属性

image.png

  • obj[key] 查看键的值 例子:

image.png

  • obj.key 同上 例子:

image.png

3.修改或增加(已有属性则改,没有属性则增)

  • 直接赋值

image.png

  • 批量赋值

image.png 例子:

image.png

  • 修改隐藏属性 objcet.create

image.png

  • __proto__ 不要去修改!!

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

in:in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。它的左边是一个字符串,表示属性名,右边是一个对象。

var obj = { p: 1 };
'p' in obj // true
'toString' in obj // true

in运算符的一个问题是,它不能识别哪些属性是对象自身的,哪些属性是继承的。就像上面代码中,对象obj本身并没有toString属性,但是in运算符会返回true,因为这个属性是继承的。

这时,可以使用对象的hasOwnProperty方法判断一下,是否为对象自身的属性。

var obj = {};
if ('toString' in obj) {
  console.log(obj.hasOwnProperty('toString')) // false
}

总结:'name' in obj他不能识别隐藏属性是否是自己的,例如toString属性.而hasOwnProperty可以识别哪些属性是自身的.