JS对象

158 阅读1分钟

1:声明对象的两种语法

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

●细节

1.键名是字符串,不是标识符,可以包含任意字符

2.引号可省略,省略之后就只能写标识符

3.就算引号省略了,键名也还是字符串(重要)

2:如何删除对象的属性

''delete obj.xxx''或'delete obj['xxx']'即可删除obi的xxX属性

请区分属性值为undefined」和「不含属性名」

●不含属性名

'xxx' inobi==e false

含有属性名,但是值为undefinedxxx' in obj && obj.xx === undefined

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

3:如何查看对象的属性

查看自身所有属性

Object.keys(obj)

查看自身+共有属性

console.dir(obj)

或者自己依次用Object.keys打印出obj.__ .proto__判断一个属性是自身的还是共有的

obj.hasOwnProperty'toString')

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

obj['name']= jack'//改自身

Object.assign(obj, {age:18, ..})//批量改自身
obj. __proto__['toString']= 'Xxx'//改共有属性
Object.prototype['toString']= 'xxx'//改共有属性
obj.__proto__ = common//改原型

let obj = 0bject.create(common)//改原型

注:所有__proto__代码都是 强烈不谁很写的

\

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

'name' in obj用来判断name属性是否为obj的属性(包括自身属性和公有属性),而obj.hasOwnProperty('name') 用来判断name属性是否为obj的自身属性,不包括公有属性