对象

js中的数据类型

  • String 字符串
  • Number 数值
  • Boolean 布尔值
  • Null 空值
  • Undefined 未定义
  • 以上五中数据基本数据类型
    以后我们看到的值 只要不是以上五种 全都是对象(object)

Object 对象

基本数据类型的值直接在栈内存中存储

基本数据类型都是单一的值 值和值之间没有任何联系,所有的变量都是独立的不能成为一个整体

修改一个变量不会影响其他变量

对象是保存到堆内存中的,每创建一个新的对象就会在堆内存中开辟一个新的内存空间

对象属于一种复合的数据类型,在对象中可以保存多个不同的数据类型的属性

变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过变量修改属性时,另一个也会受到影响

对象的分类

  1. 内建对象
    由ES标准中定义的对象,在任何的ES中实现都可以使用
    比如:Math String Number等等

  2. 宿主对象
    由JS的运行环境提供的对象 目前来将主要指浏览器提供的对象
    比如:BOM和DOM

  3. 自定义对象
    由开发人员自己创建的对象

创建对象

使用new关键字调用函数 是构造函数constructor

构造函数是专门用来创建对象的函数

使用typeof检查一个对象时 返回值是object

var obj = new Object();
console.log(obj);

添加属性

在对象中保存的值称为属性
向对象添加属性
语法:对象.属性名 = 属性值;

obj.name = "karen";
obj.gender = "男";
obj.age = 18;
console.log(obj);

对象的属性值可以是任何的数据类型,也可以是个函数

obj.sayName = function(){
	console.log("hello");
};

// 调方法
obj.sayName();

函数也可以称为对象的属性

如果一个函数作为一个对象的属性保存,那么我们称这个函数是这个对象的方法,调用这个函数就说调用对象的方法(method)

但是它只是名称上的区别 没有其他区别

属性名

  • 对象的属性名不强制要求遵守标志符的规范
    什么乱七八糟的名字都可以 但是我们还是要尽量遵守标志符的规范使用,做到见名知意
  • 如果要使用特殊的属性名 就不能采用.的方式来操作,需要使用另一种方式
    语法:对象[“属性名”] = 属性值,读取也需要同样的方式

使用[]这种方式去操作属性 更加的灵活

在[]中可以直接传递一个变量 这样变量值是多少就会读取那个属性

obj.name = "ben";
obj.var = "hello";
console.log(obj.var);
			
// 使用特殊的属性名 需要使用另一种方式 语法:对象["属性名"] = 属性值
obj["123"] = 789;
console.log(obj["123"]);

属性值

JS对象的属性值 可以是任意的数据类型 甚至也可以是一个对象

读取对象中的属性

语法:对象.属性名

// 如果读取对象中没有的属性 不会报错而是会返回undefined
console.log(obj.name);
console.log(obj.gender);
console.log(obj.age);
console.log(obj["123"]);

修改对象中的属性

语法:对象.属性名 = 新值

obj.name = "jack";

删除对象中的属性

语法:delete 对象.属性名

delete obj.name;
console.log(obj);
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐