①Object对象
定义:无序的数据集合/键值对的集合
写法:

let obj={‘name’:‘fran’,‘age’:18}
let obj=new Object({‘name’:‘fran’,‘age’:18})

细节:
》键名是字符串,不是标识符,可以包含任意字符
》引号可以省略,省略之后就只能写标识符
》就算引号省略了,键名也还是字符串(重要)

②如何用变量做属性名

let p1=‘name’
let obj={p1:‘frank’} //这样写属性名为’p1’
let obj={[p1]:‘frank’} //这样写属性名为’name’

对比:不加[]的属性名会自动变成字符串、加了[]则会当成变量求值

③如何删除对象的属性

删除属性名(深处obj的xxx属性)
delete.obj.xxx或者delete.obj[‘xxx’]
检查是否删除:
'xxx’in obj——》打印出false,则已经被删除
删除属性值:
obj.xxx=undefined

类比:你有没有带卫生纸?
A:没有//不含属性名
B有,但是没带//含有属性名,但是值为undefined.

④如何查看对象的属性(读属性)

Object.keys(obj) 查所有属性名
Object.values(obj) 查所有属性值
Object.entries(obj) 查所有属性名和属性值
console.dir(obj) 查看自身加共有属性(原型)
obj.hasOwnProperty(‘toString’) 判断一个属性是自身的还是共有的【返回false/true】

⑤如何修改或者增加对象的属性(写属性)

直接赋值
let obj={‘name’:‘frank’}
可以写为
obj.name=‘frank’
obj[‘name’]=‘frank’
obj[‘na’+‘me’]=‘frank’

批量赋值(es6新增)
Object.assign(obj,{‘age’:18,‘gerder’:‘man’})

修改或者增加共有属性
obj.proto_toString=‘xxx’ //不推荐使用_proto
Object.prototype.toString=‘xxx’
注名:一般来说,不要修改原型,会引起很多问题;
无法通过自身修改或增加共有属性

修改隐形属性 var common={‘国籍’:‘中国’,‘haircolor’:‘black’} var person=Object.create(common) person.name=‘frank’ person.age=‘18’ 打印 person得到

javascript 删除一个对象 js删除对象的方法_赋值

⑥obj.hasOwnProperty(‘name’)和 ‘name’ in obj的区别

obj.hasOwnProperty(‘name’) 判断对象实例的是否具有某个属性

javascript 删除一个对象 js删除对象的方法_属性值_02

‘name’ in obj 判断的是对象的所有属性,包括对象实例及其原型的属性

javascript 删除一个对象 js删除对象的方法_前端_03