JS 对象基本用法(Object)

JavaScript有七种数据类型,分别为number、string、symbol、bool、undefined、null和object,其中object是唯一一种复杂类型。

object对象

定义

  • 无序的数据集合
  • 键值对的集合

声明对象的两种语法

object可以被定义成无序的数据集合,也可以被定义成键值对的集合,下面是object的两种写法:

  • 下面是一种常用的简写方式,‘name’和‘age’是键(key),‘Alex’和‘18’是值(value)
let obj ={'name':'Alex','age':'18'}
  • 下面是正规的写法
let obj = new Object({'name':'Alex','age':'18'})
  • 下面是命名一个对象
console.log({'name':'frank','age':18})

注意

  1. 键名是字符串,可以包含任意字符,不是标识符;
  2. 引号可以省略,但省略后就只能写标识符,且引号省略,键名仍为字符串。

如何删除对象的属性

首先声明一个对象obj,包含属性xxx

  • 使用delete http://obj.xxx或delete obj[‘xxx’]即可删除obj的xxx属性;
  • 使用obj.xxx= undefined ,属性名还在,但是值为undefined;
  • 使用’xxx’ in obj 用来判断obj中是否还含有xxx属性,返回值为true和false;
  • 使用’xxx’ in obj && obj.xxx === undefined,含有属性名但是值为undefined。

注意:
不能使用obj.xxx=== undefined来判断xxx是否为obj的属性。

如何查看对象的属性

  • 查看自身所有属性:Object.keys(obj);
  • 查看自身+共有属性:console.dir(obj)//也可以使用Object.keys 依次打印出obj.proto;
  • 判断属性xxx是自身的还是共有的:obj.hasOwnproperty(‘xxx’);
  • 查看属性的两种方法:(1)中括号语法:obj['key];(2)点语法:obj.key。

注意:

  1. obj[key]与obj[‘key’]是不同的,前者的key是变量,而变量key的值不一定为‘key’,在使用时要注意区分二者的用法;
  2. 每个对象都有原型,原型作为对象也有原型,只是为null;
  3. 定义一个对象obj={},它的原型为所有对象的原型,这个对象的原型包含所有对象的共有属性,是对象的根。

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

  • 直接赋值:name均为字符串
let obj = {name : 'Alex'}
obj.name='Alex'
obj['name']='Alex'
obj['na'+'me'] = 'Alex'
--------------------------------------------------------
let key = 'name'; obj[key] = 'Alex'
//obj.key 等价于 obj['key'],不等价于obj[key]因此下面这条语句通常情况下是错误的
let key = 'name'; obj.key = 'Alex'
  • 批量赋值
Object.assign(obj,{name:Alex,age:18})
  • 更改共有属性(把属性xxx改为属性yyy)
    obj.__proto__['xxx'] = 'yyy'(不推荐使用)
    Object.prototype['xxx'] = 'yyy'
  • 更改原型(把obj的原型改为common)
    obj.__proto__ = common(不推荐使用)
    let obj = Object.create(common)

注意:

  1. 一般不修改原型;
  2. 强烈不推荐使用__proto__代码;

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

  • in:如果指定的属性在指定的对象或其原型链中,则in运算符返回true;
  • hasOwnProperty:所有继承了Object的对象都会继承到hasOwnProperty方法,hasOwnProperty()方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。
  • 二者区别在于hasOwnProperty方法会忽略掉那些从原型链上继承到的属性,也就是说如果name是对象从原型链上继承到的属性,那么使用in运算符,结果会返回true,而使用hasOwnProperty方法,结果会返回false。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,可以通过以下方法将Object对象转换为Map对象。 首先,创建一个新的Map对象: ```javascript var myMap = new Map(); ``` 然后,使用for...in循环遍历Object对象的属性,并使用Map.prototype.set方法将每个属性的键值对添加到Map对象中: ```javascript for (var key in myObject) { myMap.set(key, myObject[key]); } ``` 最后,你可以使用myMap来访问转换后的Map对象。例如,可以使用Map.prototype.values()方法来获取Map对象中每个元素的值: ```javascript var mapValues = myMap.values(); console.log(Array.from(mapValues)); // 输出Map对象中的值的数组 ``` 综上所述,这是将JavaScript中的Object对象转换为Map对象的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [js中遍历Map对象的方法](https://download.csdn.net/download/weixin_38665804/13669364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [JavaScript中Object对象 和 Map对象 的比较](https://blog.csdn.net/qq_42249552/article/details/103526279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值