JS对象基本用法
1、声明对象的两种方法
let obj={'name':'jxm','age':18}
let obj=new Object({'name':'jxm'})
键名是字符串,不是标识符,可以包含任意字符。
2、属性名
let obj={
1:'a',
3.2:'b',
1e2:true,
1e-2:true,
.234:true,
0xFF:true
};
object.keys(obj)=>["1""100","255","3.2","0.01","0.234"];
以上属性名会进行转换。
let p1='name'
let obj={[p1]:'jxm'这样写,属性名为'name'
3、如何删除对象属性
delete obj.xxx 或者delete obj['xxx'];
不含有属性名:'xxx' in obj === false;
含有属性名但值为undefined
'xxx' in obj && obj.xxx ===undefined;
注意断定xxx为obj的属性
4、如何查看对象属性
查看自身所有属性名:Object.keys(obj);
查看自身所有属性值:Object.values(obj);
查看属性名和属性值:Object.entries(obj);
查看自身属性和共有属性:console.dir(obj),或者依次用Object.keys打印出obj__proto__
判断一个属性是自身的还是共有的:obj.hasOwnProperty('toString')
5、原型
每一个对象都有原型
原型里面存着对象的共有属性
比如obj的原型就是一个对象
obj.proto 存着这个对象的地址
这个对象里有toString/constructor/valueOf
对象的原型也是对象
obj={}的原型是所有对象的原型
这个原型包含所有对象的共有属性,是对象的根
这个原型也有原型,是null
6、如何修改或增加对象属性
无法通过自身修改或增加共有属性
let obj={},let obj2={},共有toString
obj.toString ='xxx'只会修改obj的自身属性
obj2.toString还是在原型上
强行修改原型属性或增加原型上面的属性
obj.proto.toString='xxx'//不推荐用__proto__
Object.prototype.toString ='xxx'
一般不建议修改原型属性,容易出问题
修改对象原型推荐使用Object.create
let common ={kind:'human'}
let obj = Object.create(common{
name:{value:'jxmjxm'}
})
7、'name'in obj和obj.hasOwnProperty('name')的区别
第一个判断obj对象是否拥有属性name无论是自身还是共有的,第二个判断一个属性是否是自身属性