JS 对象基本用法

对象

所谓对象,就是一种无序的数据集合,由若干个“键值对”(key-value)构成。

  1. 键名
  • 对象的所有键名都是字符串,所以加不加引号都可以。
  • 如果键名是数值,会被自动转为字符串。 例如:
let o ={
  1: 'a',     //   1: "a",
  3.2: 'b',   //   3.2: "b",
  1e2: true,   //   100: true,
  1e-2: true,  //   0.01: true,
  .234: true,  //   0.234: true,
  0xFF: true  //   255: true
};

复制代码
  • 键名不符合标识名的条件,必须加引号。 例如:
let o = {
  '1p': "Hello World",
  'h w': "Hello World",
  'p+q': "Hello World"
};
复制代码
  • JavaScript的保留字可以不加引号当作键名。
var obj = {
  for: 1,
  class: 2
};
复制代码
  1. 属性 对象的每一个键名又称为属性(property),它的“键值”可以是任何数据类型。如果一个属性的值为函数,通常把这个属性称为“方法”,它可以像函数那样调用。
let o = {
  p: function (x) {
    return 2 * x;
  }
};

o.p(1)
// 2
复制代码

声明对象

  1. 三种方式
  • var obj = {p1 : 'name'}
  • let obj = {p1 : 'name'}
  • const obj = {p1 : 'name'}
  1. 区别
  • var 不建议使用,已过时
  • let 声明时,可赋值也可不赋值。一般用于变量声明。
  • const 声明时要赋值。一般用于常量声明。
  1. let声明规则
  • 遵循作用域,使用范围不超出{}
  • 不能重复声明(同一作用域)
  • 必须声明再使用,否则报错
  • 全局声明的let变量不会变成window的属性
  • 可赋值也可不赋值
  1. const声明规则
  • 与let几乎一样
  • 声明时要赋值,且赋值后不能更改,一般用于常量声明

查看属性

  • Object.keys(obj2)
  • Object.values(obj2)
  • Object.entries(obj2)  查看key&value

查看自身属性和共有属性

  • console.dir(obj2)
  • 'toString in obj2'  不会区分是自身属性还是共有属性
  • obj.hasOwnProperty('toString')  判断改属性是否是自身属性,JS中唯一不会遍历原型链的方法

删除属性

delete命令用于删除对象的属性,删除成功后返回true

let o = {p: 1};
Object.keys(o) // ["p"]

delete o.p // true
o.p // undefined
Object.keys(o) // []
复制代码
  • 删除一个不存在的属性,delete不报错,而且返回true
let o = {};
delete o.p // true
复制代码
  • delete命令不能删除var命令声明的变量,只能用来删除属性
let p = 1;
delete p // false
delete window.p // false
复制代码

修改、增加对象属性

  1. 直接赋值
let obj2 = {name: 'jwoong'}
obj2.name = 'linda'
obj2['name'] = 'louys'
obj2['na'+'me'] = 'ADA'

let key = 'name';
obj[key] = 'frank'
复制代码
  1. 批量赋值 Object.assign(obj3,{age:18, gender:'man'})

  2. 修改对象的原型

  • 不推荐使用__proto__
let obj = {name:'jwoong'}
let common = {kind:'human'}
obj.__proto__ = common
复制代码
  • 推荐使用Object.create
let obj = Object.create(common)   //一创建就指定原型
obj.name = 'frank'
复制代码
分类:
前端
标签: