JS 对象基本用法(Object)

本文介绍了JavaScript中的对象,包括对象的定义、声明方式、删除属性的方法、查看属性的技巧以及`name` in obj和`obj.hasOwnProperty('name')`的区别。讲解了如何创建、修改、删除和检查对象的属性,强调了两者在查找属性时对原型链的不同处理。
摘要由CSDN通过智能技术生成

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。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值