声明对象的两种语法
声明对象有两种写法:
①letobj={name:frank,age:18}②letobj=newObject({name:frank,age:18})
第①种写法是相对简单的写法,第②种是正规的写法。注意,每对键名和值中间用冒号隔开。键名是字符串,不是标识符,可以包含任意字符。引号可以省略,但就算省略了引号键名也还是字符串。
属性名:每个key都是对象的属性名(property),使用Object.keys(obj)可以得到所有obj的key。
属性值:每个value都是对象的属性值。
如果使用变量作为属性名,例如:
letp1=nameletobj={p1:frank}=>属性名为p1letobj={[p1]:frank}=>属性名为name
意思是不加 [ ] 的属性名会自动变成字符串,加了 [ ] 的属性名会当做变量求值。值如果不是字符串,会自动变成字符串。
JS中每个对象都有一个隐藏属性,这个隐藏属性储存着其共有属性组成的对象的地址,这个共有属性组成的对象叫做原型(prototype),也是对象的根。也就是说,隐藏属性储存着原型的地址。
每个对象都有原型,而对象的原型也是对象,所以对象的原型也有原型,这个原型是null。
如何删除对象的属性
删除对象的属性有两种写法:
①deleteobj.xxx或deleteobj[xxx]②obj.xxx=undefined
第①种写法可以删除obj的xxx属性,第②种写法可以删除xxx的原有属性值,值会变成undefined。但http://obj.xxx===undefined 不能判定xxx是否为obj的属性。
另外,如果要查看xxx属性是否在obj中,就使用 xxx in obj ,如果是true,则在;如果是false,则不在。
如何查看对象的属性
查看对象的属性有两种写法:
①Object.keys(obj)②console.dir(obj)或依次用Object.keys打印出obj.__proto__
第①种可以查看自身的所有属性,第②种可以查看自身的所有属性加上共有属性。
同理,Object.values(obj)可以查看自身的所有属性值,Object.entries(obj)可以查看自身的所有属性名加属性值加共有属性。
使用obj[key] 或obj.key 可以查看单个属性名的属性值。
另外,如果要判断一个属性是自身的还是共有的,就可以使用obj.hasOwnProperty(toString)这类语句, 如果是true,则是自身的;如果是false,则不是自身的,但不一定是共有的。
如何修改或增加对象的属性(写属性)
有两种写法:
①直接赋值
obj.name=frankobj[name]=frankobj[na+me]=frank或letkey=name;obj[key]=frank
②批量赋值
Object.assign(obj,{age:18,gender:man})
注意,无法通过自身修改或增加共有属性。如果要修改,则推荐使用以下代码,这就是原型链。
letobj=Object.create(common)obj.name=frankobj.age=18
name in obj和obj.hasOwnProperty(name) 的区别
name in obj是查看name属性是否在obj中,如果是true,则在;如果是false,则不在。
obj.hasOwnProperty(name) 是判断一个属性是自身的还是共有的, 如果是true,则是自身的;如果是false,则不是自身的,但不一定是共有的。
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容