JS对象基本用法

对象的定义

  1. 无序的数据集合
  2. 键值对的集合

一、声明对象的两种语法

let obj = {'name' : name, 'age': 16}
let obj = new Object({'name' : name, 'age': 16})
// 键名是字符串,无论是否有引号;
// 引号省略后键名只能是标识符;
// 变量做属性名
let p1 = 'name';
let obj = {p1: 'ha'}  // 属性名为p1
let obj = {[p1]: 'ha'}  // 属性名为name

二、如何删除对象的属性

// 以下两种方式均可删除obj的xxx属性
delete obj.xxx 
delete obj['xxx']
// 不含属性名
'xxx' in obj === false 
// 含属性名但值为undefined
'xxx' in obj && obj.xxx === undefined
// 注意值为undefined并不能证明xxx是obj的属性
obj.xxx === undefined

三、如何查看对象的属性

// 查看自身所有属性
Object.keys(obj)
// 查看自身+共有属性
console.dir(obj)
// 判断一个属性是否是自身属性
obj.hasOwnProperty('属性名')
// 注意区分hasOwnProperty为判断是否为自身属性,不包括共有属性;而'xxx' in obj 判断此对象是否有此属性名,包括共有属性;
// 查看单个属性值
obj['key']
obj.key  // 此属性名是字符串
obj[key]  // 注意,此处key代表变量key的值

四、如何修改或增加对象的属性

obj.name = '2'  // 如无name属性,则增加;如已有,则修改name的值为2;
Object.assign(obj, {age: 1, gender: 'man'})  // 批量赋值,规则同上;
// 无法通过自身修改或增加共有属性,如下:
let obj = {}, obj2 = {}  // 共有toString属性
obj.'toString' = 'xxx'  // 只会将自身的toString属性修改
obj2.toString // 还是在原型上
// 如果需要修改或增加原型属性,可通过下面的方式,但一般不要修改原型
obj.__proto__.toString ='xxx'  // 不推荐用__proto__
Object.prototype.toString = 'xxx'
// 修改隐藏属性
// 不推荐属于__proto__
let obj = {}, obj2 = {}
let common = {kind:'human'}
obj.__proto__ = common
obj2.__proto__ = common
// 推荐使用Object.create,即在开始就规范好
let obj = Object.create(common)
obj.name = '1'
let obj2 = Object.create(common)
obj2.name = '2'
全部评论

相关推荐

点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务