JS 对象基本用法

100 阅读1分钟

对象的定义:

无序的数据集合,键值对的集合

声明对象

  • obj的key 只能字符串,可以包含任意字符
  • key可以省略引号,省略后就只能写标识符
  • 省略引号,key还是字符串


let obj = { 'name': 'wsl', 'age': 18 }
let obj = new Object({'name': 'wsl'})
console.log({ 'name': 'wsl', 'age': 18 })

删除对象的属性

let obj = {xxx:1,yyy:2}

delete obj.xxx 
delete obj['xxx']

let key = 'xxx'
delete obj[key]

查看对象的属性

// 查看对象所有的key
Object.keys(obj)

// 查看所有的value 
Object.values(obj)

// 查看所有的key 和 value 
Object.entries(obj)


// 通过目录的形式 在控制台打印出来 查看 自身属性 和原型属性
console.dir(obj) 


//判断一个属性是自身的还是原型的

obj.hasOwnProperty('toString')


obj['xxx'] 
obj.xxx   // xxx 是字符串
obj[xxx] // xxx 是变量

// 查看原型属性
Object.keys打印出 obj.__ proto_

修改或增加对象的属性


let obj = {name: 'frank'} // name 是字符串
obj.name = 'frank' // name 是字符串
obj['name'] = 'frank'
obj[name] = 'frank' // 错,因 name是变量  值不确定  undefined
obj['na'+'me'] = 'frank'
let key = 'name'; obj[key] = 'frank'
let key = 'name'; obj.key = 'frank' // 错  key 是字符串



// 批量赋值
Object.assign(obj, {age: 18, gender: 'man'})

// 修改原型属性

Object.prototype.toString = 'xxx'

// 不推荐用 __proto__  最好在创建实例之前就修改好原型
obj.__proto__.toString = 'xxx' 


//使用现有的对象来提供新创建的对象的__proto__
let obj = {name:'frank'}
let obj2 = {name: 'jack'}
let common = {kind: 'human'}

obj = Object.create(common)
obj.name = 'frank'
obj2 = Object.create(common)
obj2.name = 'jack'


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

obj.hasOwnProperty('name') 只会在当前对象上查找

'name' in obj会在原型链上查找