JS-Object类型

本文详细介绍了JavaScript中的对象,包括内建对象、宿主对象和自定义对象的分类。讲解了如何创建对象,如构造函数和对象字面量,并展示了属性名和属性值的操作,包括计算属性和简写方式。此外,还讨论了对象的增删改查,以及基本数据类型和引用数据类型的比较。最后,通过for...in循环展示了遍历对象属性的方法。
摘要由CSDN通过智能技术生成

Object对象其实就是一组数据和功能的集合。

对象的分类:
1.内建对象:由ES标准中定义的对象。比如:Math String Number Boolean Function Object…
2.宿主对象:由JS的运行环境提供的对象,目前来讲主要是指浏览器提供的对象。比如:BOM DOM
3.自定义对象:由开发人员自己创建的对象。

一、创建对象

1、使用构造函数创建

使用new关键字调用的函数,是构造函数constuctor,构造函数是专门用来创建对象的函数

let obj=new Object()

2、使用对象字面量创建

使用对象字面量来创建一个对象:
let obj={}
使用对象字面量来创建对象时,可以直接指定对象中的属性
语法:{属性名:属性值,属性名:属性值,…}

let obj2={
  name:"Tom",
  age:12,
  gender:"男",
  test:{
  name:"LiLi",
  }

}

属性名和属性值

一、属性名

1.使用属性名,可以使用 . 的方式来操作

var obj=new Object()
obj.name="Tom"

2.如果使用特殊的属性名,不能使用 . 的方式操作,需要使用另一种方式:对象[“属性名”]=属性值

var obj=new Object()
obj["123"]=2345
console.log(obj["123"]);
let n="123"
console.log(obj[n]);

2.计算属性:
当创建一个对象时,我们可以在对象字面量中使用方括号。这叫做计算属性

let fruit=prompt("which fruit to buy?","apple");

let bag={
[fruit]:5,
};
alert(bag.apple);

以下写法与上例效果相同

let fruit=prompt("which fruit to buy?","apple");
let bag={};
bag[fruit]=5;

可以在方括号中使用更复杂的表达式,如下:

let fruit="apple";
let bag={
[fruit+'Computers']:5//bag.appleComputers=5
};

属性值

属性值简写:
当属性名和变量名一样时,有一种特殊的属性值缩写的方法,可以使属性名变得更短。

function makeUser(name,age){
return{
name,    //与name:name相同
age,     //与age:age相同
};
}

可以把属性名简写方式和正常方式混用:

let user={
name,     //与name:name相同
age:30
};

in运算符
通过该运算符可以检查一个对象中是否含有指定的属性,如果有则返回true,没有返回false。
console.log("123" in obj); //true

属性的增删改查

1.向对象添加属性

let obj=new Object()
//向obj中添加一个name属性
obj.name='Tom';
console.log(obj); 

2.读取对象中的属性
如果读取对象中没有的属性,不会报错,而是会返回undefined;

console.log(obj.name);

3.修改对象中的属性

obj.name='Lilei'
console.log(obj.name);

4.删除对象中的属性

 delete obj.name

基本数据类型和引用数据类型

JS中的变量都是保存到栈内存中的,基本数据类型的值直接在栈内存中存储,值与值之间都是独立存在,修改一个变量不会影响其他的变量。

对象是保存在堆内存中的,每创建一个对象,就会在堆内存中开辟出一个新的空间**。而变量保存的是对象的内存地址**(对象的引用)。如果两个变量保存的是同一个对象的引用,当一个通过一个变量修改属性时,另一个也会受到影响。

  • 当比较两个基本数据类型的值,就是比较值。

  • 当比较两个引用数据类型的值时,比较的是对象的内存地址。

  • 如果两个对象是一模一样的,但是地址不同,它也会返回false。

let obj3=new Object()
let obj4=new Object()
obj3.name="Tom"
obj4.name="Tom"
console.log(obj3==obj4);//false

五、for…in循环

举个例子:列出user的所有属性

let user={
name:"John",
age:30,
isAdmin:true,
};
for(let key in user){
//keys
alert(key);//name,age,isAdmin
//属性键的值
alert(user[key]);
}

遍历一个对象,获取属性的顺序有“特别的顺序”:整数数学会被排序,其他属性则按照创建的顺序显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值