JS 对象基本用法

119 阅读2分钟

声明对象的两种语法

  • JS中对象是复杂数据类型,是一组键值对,是无序数据的集合。
  • 键名是字符串,不是标识符,可以包含任意字符。
  • 引号可以省略,但键名还是字符串,省略之后就只能写标识符。

创建对象的两种方式:

/规范写法
let obj = new Object({'属性名':'属性值','属性名':'属性值'}) //逗号隔开

//简写写法
let obj2 = {'属性名':'属性值','属性名':'属性值'}

如何删除对象的属性

删除对象的两种方式

delete obj.xxx 

delete obj['xxx']

直接删除对象的一个属性

let obj = {name:'eric',age: 18 };
delete obj.name 
//这样是直接删除掉了obj的name属性

我们可以通过name in obj 来查看是否属实
'name' in obj 
// 会返回false 

如何查看对象属性

Object.keys(obj);

可以查看对象obj的所有属性名

let obj = {name:'eric',age:'18'};
Object.keys(obj);
// 输出结果
{name,age}

Object.values(obj)

可以查看对象的所有属性值

let obj = {'name':'eric', 'age': 18};
Object.values(obj);
// 输出结果
{eric ,18}

console.dir(obj)

可以打印出对象所有属性,包含所有的隐藏属性

let obj = {'name':'eric','age': 18};
console.dir(obj);

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

修改或增加属性

直接赋值

- let obj ={name:'eric'}

- obj.name='eric'

- obj['name']='eric'

- obj['na'+'me']='eric'

- let key= 'name'; obj[key] ='eric'

批量赋值

Object.assign(obj,{age:18,gender:'man'})

修改或增加共有属性

一般不要修改原型,会出现很多问题

方法:

obj.__proto__.toString='xxx'  // 不推荐此方法

Object.prototype.toString='xxx'

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

区别在于自身属性和共有属性,我们在查看和删除的时候

let obj = {name:'eric',age:18}
//我们知道obj有个自身属性,它还有一个隐藏的共有属性

'name' in obj 
//name是属于obj的自身属性或共有属性  
//true

obj.hasOwnProperty('name') 
//name自身属性  
//true