《JS对象的基本用法》

230 阅读2分钟

七种数据类型

数字(number),字符串(string),布尔(bool),符号(symbol),(null),未定义(undefined),对象(object)

五种Falsy值

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

声明对象的两种语法

let obj{'name':'huo','age':18}
let obj = new Object({'name':'huo'})

其中'name'和'age'是键名,键名是字符串不是标识符,也可以包含任意字符。引号可以省略,引号省略后只能写成标识符或者数字。注意:就算键名的引号被省略,键名依然是字符串

转义

1,\'表示'

2, \"表示"

3, \n表示换行

4, \r表示回车

5, \t表示tab制表符

6, \\表示\

7, \uFFFF表示对应的Unicode字符

8, \xFF表示前256个Unicode字符

如何删除对象的属性

1,直接将yyy属性删掉
delete obj.yyy
//或者
delete obj['yyy']

2,键名为undefined
obj.xxx=undefined

'xxx' in obj===false //说明不含属性名
'xxx' in obj && obj.xx===undefined //含有属性名,但值为undefined
obj.xx===undefined  不能判断'xxx'是否为obj的属性

如何查看对象的属性

  • 查看属性的key
Object.keys(obj)
  • 查看属性的value
Object.values  	(obj)
  • 查看自身+共有属性
console.dir(obj)
  • 判断一个属性是自身的还是共有的
obj.hasOwnProperty('toString')
  • 'name' in obj和obj.hasOwnProperty('xxx')的区别是
'name' in obj //可以访问到共有属性
obj.hasOwnProperty('xxx') //只能查看自己的属性

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

  • 直接赋值
let obj={'name':'huo'} // name是字符串
obj.name='huo' // name是字符串
obj['name']='huo'
let key = 'name'; obj[key]='huo'
- 批量赋值
- Object.assign(obj,{
    age:18
    gender:'man'
})
  • 无法通过自身修改或增加共有属性
let obj={},obj2={} //共有 tostring
obj.toString='xxx' //只改obj的自身属性,obj2.toString还在原型上
  • 一定修改或增加原型上的属性
(1) obj.__proto__.toString='xxx' //不推荐使用__proto__
(2) Object.prototype.toString='xxx'