JavaScript对象基础

129 阅读1分钟

1.对象的定义与声明

  • 定义:无序的数据集合(键值对的集合)
  • 声明:两种声明方式如下↓
let obj1 = new Object({ name: 'jackey', age: 18 });   //方式一
let obj2 = { name: 'jackey', age: 18 };               //方式二
  • 细节:就算引号省略,键名(属性名)还是字符串
  • 注意:
    • obj["property"]等于obj.property,表示属性
    • obj["property"]不等于obj[property],这里property变量

2.删除对象的属性

  • delete:可以删除对象的属性名和属性值
  • obj.property = undefined:只能赋值属性值为undefined而没办法删除属性名
  • 删除属性的两种方式↓
delete obj.property;        //方式一
delete obj["property"];     //方式二

3.查看对象的属性

  • 查看自身所有属性名: Object.keys(obj)
  • 查看自身+共有属性: console.log(obj)
  • 检查一个属性是否是一个对象的属性(私有): obj.hasOwnProperty('property')
  • 检查一个属性是否是一个对象的属性(私有+共有): 'name' in obj PS:共有属性即在原型(__proto__)上的属性

3.修改或增加对象的属性

  • 直接赋值
    赋值已有属性就是更改,赋值未有属性就是添加
let obj = { name:'pray' };
obj.name = 'frank';         //修改属性方式一
obj['name'] = 'frank';      //修改属性方式二
obj.age = 18;               //添加属性方式一
obj['age'] = 18;            //添加属性方式二
  • 批量赋值
Object.assign(obj, {age: 18, gender: 'man'})  //批量赋值
  • 修改共有属性
let obj ={}
obj.__proto__.toString = 'xxx';        //方式一(不建议通过__proto__更改)
Object.prototype.toString = 'xxx';     //方式二
  • 修改原型
//方式一 修改__proto__(不建议)
let obj = {name:'frank'}
let obj2 = {name: 'jack'}
let common = {kind: 'human'}
obj.__proto__ = common
obj2.__proto__ = common

//方式二 用Object.creat()API实现
let obj = Object.creat(common); //给obj对象继承common对像的属性取代__proto__属性。
obj.name = 'frank'