JS 对象基本用法

90 阅读2分钟

JS笔记

JS的七种数据类型

数据类型可记忆为“四基两空一对象”,即

number类型
string类型
bool类型
symbol类型

null类型
undefined类型

object类型

五个falsy值为:

  1. null
  2. undefined
  3. 0
  4. NaN
  5. ''(空字符串)

object类型

定义:无序的数据集合与键值对的集合。

Object.keys(obj)可以得到obj的所有key

写法:

    let = {'name':'boy','age':18}
    let = new Object({'name':'boy'})
    console.log({'name':'boy','age':18})
  • 键名(又称key值或属性名)是字符串,不是标识符,可以包含任意字符;
  • 引号可省略,省略之后就只能写标识符;
  • 引号省略后,键名还是字符串(所有属性名会自动变成字符串);
  • 每个value都是对象的属性值;

变量作属性名:

    let p1 = 'name'
    let obj = {p1:'boy'}//属性名为'p1'
    let obj = {[p1]:'boy'}//属性名为'name'

不加 [] 的属性名会自动变成字符串,加了[]则会当做变量求值。注意:如果中括号内加上'',则又变成了。

js增删改查

删除属性:

delete obj.xxx 或 delete obj['xxx']即可删除属性(属性名和属性值都不存在);

查看属性:

  • 查看自身所有属性Object.keys(obj)
  • 查看自身+共有属性console.dir(obj)或者自己依次用 Object.keys 打印出 obj.__proto__
  • 判断一个属性是自身的还是共有的obj.hasOwnProperty('toString')
  • 中括号语法:obj['key']
  • 点语法:obj.key(不推荐)

增加属性和修改属性:

  • 改自身obj['name'] = 'jack'
  • 批量改自身Object.assign(obj, {age:18, ...})
  • 改共有属性obj.__proto__['toString'] = 'xxx'
  • 改共有属性Object.prototype['toString'] = 'xxx'
  • 改原型obj.__proto__ = common
  • 改原型let obj = Object.create(common)

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

'name' in obj查看属性name是否在obj里,但是它无法区分这个属性是自身特有的还是共有的。 obj.hasOwnProperty('name')用来检测name是否为obj特有的属性还是共有的属性,如果是特有的返回true,如果是共有的则返回false