对象(Object)
对象是由键值对组成的无序数据组合,包含键名和键值,键值对之间用逗号分隔。
键名:所有键名都是字符串。
- 如果键名是数值,会被自动转为字符串。
- 如果键名不符合标识符命名规则,则必须加引号。
属性:对象的属性读取,有两种方法,点运算符和方括号运算符。
注:如果使用方括号运算,键名必须加引号,否则会被当做变量处理,数字键名可以不加引号,因为会自动转为字符串。点运算和方括号运算也可以用来给对象里的内容赋值。声明对象的语法
//示例 1:let obj1 = {"key":"value","key":"value","key":"value",}//示例 2:let obj2 = new Object({"key":"value","key":"value","key":"value",})
删除对象的属性
删除对象的两种方法
let obj = {"name":"小明","age":"18",}//第一种,赋值 undefinedobj.name = undefined//第二种,deletedelete obj.namedelete obj["name"]
undefined 和 delete区别在哪
obj.name = undefined这句话是把 undefined 的值赋给 "name" 这个属性name in obj//ture"name" 这个属性还在对象 obj 里面,只是 "name" 的 value 是 undefineddelete 时是删除对象里的内容:"key" + "value"删除成功返回true,再读取被删除的属性会返回undefined。需要注意的是如果删除一个不存在的属性,delete不会报错,且也返回true。delete只有在属性存在且不得删除的情况下才会返回false。
in
用于检查对象是否包含某个属性,检查的是键名不是键值,如果包含就返回true否则返回false。
for in
用来遍历一个对象的全部属性,遍历的是对象所有课遍历的属性,会跳过不可遍历的属性,包括自身属性和继承属性。
typeof方法确定数据类型:
可以返回一个值的数据类型,除了null会返回object,函数Fn会返回function,其他几种都会返回自身的数据类型。
查看对象的属性
查看对象本身的属性和值
let obj = {"name":"小明","age":"18",}//查看所有属性Object.keys(obj)//查看所有值Object.value(obj)//枚举属性的键值对数组Object.entries(obj)//查看自身+共有属性console.dir(obj)//判断某个对象是否含有指定的属性obj.hasOwnProperty('toString')
查看对象里某个属性
obj["key"]obj.key
修改或增加对象的属性
直接赋值
let obj = {name: '小明'} // name 是字符串obj.name = '小明' // name 是字符串obj['name'] = '小明'obj[name] = '小明' // false,因 name 值不确定obj['na'+'me'] = '小明'let key = 'name';obj[key] = '小明'letkey = 'name';obj.key ='小明' // false因为 obj.key 等价于 obj['key']
批量赋值
Object.assign(obj,{age: 18, gender: 'man'})
关于原型
//无法通过自身修改或增加共有属性let obj = {}, obj2 = {} // 共有 toStringobj.toString = 'xxx' //只会在改 obj 自身属性obj2.toString //还是在原型上//偏要修改或增加原型上的属性obj.__proto__.toString = 'xxx' // 不推荐用 __proto__Object.prototype.toString = 'xxx'一般来说,不要修改原型,会引起很多问题
