JS对象的基本用法 2

253 阅读1分钟

三、查看属性(读属性)

1、查看自身所有属性

Object.keys(obj)

key 看所有的键   value 看所有的值   entries 看所有的键和值

查看自身属性+共有属性

console.dir(obj)

或者依次用Object.keys打印出obj.__proto__   ** //不推荐**

判断一个属性是自身的还是共有的

obj.hasOwnProperty('toString')  看是不是自己的

2、查看一个属性

两种方法查看属性

    ·中括号语法:obj['key']

    · 点语法:obj.key

    ·坑新人的语法:obj[key]   //此时key为一个变量  值一般不为'key'

优先使用中括号语法,点语法会误导,让你以为key不是字符串

\\\

重点重点重点:

obj.name 等价于 obj['name']

obj.name 不等价于obj[name]

这里的name是字符串,而不是变量

只有

let name = 'frank' obj[name]等价于obj['frank']

而不是objobj['name']和obj.name

\\\

四:修改或增加属性(写属性)

直接赋值

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

批量赋值

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

修改或增加共有属性

无法通过自身修改或增加共有属性

    let obj = {},obj2 = {}   //共有属性toString

    obj.toString = 'xxx' 只会改obj的自身属性

    obj2.toString还是在原型上

偏要修改或增加原型上的属性

    1、obj.__proto__.toString = 'xxx'    //不推荐使用

    2、Object.prototype.toString = 'xxx'

一般来说,不要修改原型,会引起很多问题

修改隐藏属性

不推荐使用 __proto__

let obj = {name:'frank'}
let obj2 = {name: 'jack'}
let common = {kind: 'human'}
obj.__proto__ = common
obj2.__proto__ = common 

推荐使用 Object.create

let obj = Object.create(common)  //以common为原创建对象
obj.name = 'frank'
let obj2 = Object.create(common)
obj2.name = 'jack'

规范大概的意思是,要改就一开始就改,别后来再改