JS-6:JS对象

98 阅读1分钟

1 基本概念

image.png

  • 属性名:每个key都是对象的属性名(property);

  • 属性值:每个value都是对象的属性值;

2 属性名

  • 奇怪的属性名

image.png

  • 变量作属性名

image.png

  • symbol作属性名,迭代时会用到
let a = Symbol()
let obj = { [a]:'Hello' }
  • 对象的隐藏属性:__ proto__

image.png

3 删除属性

image.png

  • obj.xxx===undefined 不能断定'xxx'是否为obj的属性

image.png

  • in 判断是否含有属性名,obj.hasOwnProperty('属性名')是判断该属性是否为自有属性;

image.png

4 查看所有属性(读属性)

  • 查看属性值

image.png

  • obj.name 等价于 obj['name'] ,obj.name 不等价于 obj[name] ; 在这里面,name是字符串,而不是变量;

  • let name='frank' obj[name] 等价于 obj['frank'] ,而不是 obj['name'] 和 obj.name 这里面,点语法和中括号语法是读取属性值,obj['name']=obj.name=frank,而中括号加变量,是把变量的值作为属性名,即 obj[name]=obj['frank'] ,而 obj['name'] != obj['frank']

image.png

  • 读取属性名的方法 image.png

  • 判断自由属性和共有属性 image.png

  • Object.keys()、Object.values()、Object.entries() image.png

5 修改或增加属性(写属性)

  • 直接赋值 image.png

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

  • 修改或增加共有属性

image.png

image.png

  • 修改隐藏属性,__proto__会修改所有对象的隐藏属性,不要使用

image.png

  • Object.create()只会修改单个对象的隐藏属性,推荐使用 image.png

6 原型

image.png

  • 原型的原型为:null image.png

  • var声明的变量会自动挂在window上:

image.png

7 总结

image.png

image.png