一、对象简介
1.1、什么是对象
对象的概念首先来与对客观世界的认识,它用于描述客观世界存在的特定实体。在计算机的世界里,不仅存在来自于客观世界的对象,也包含为解决问题而引入的比较抽象的对象。对象是 JS 中的一种复合数据类型,它相当于一个容器,在对象中可以存储不同类型的数据。
程序就是对现实世界的抽象,一个事务抽象到程序中就变成了对象。
在程序的世界中,一切皆对象;
1.2、对象的属性和方法
在 JS 中,对象包括两个要素:属性和方法。通过访问或设置对象的属性,并且调用对象的方法,就可以对对象进行各种操作,从而实现需要的功能。
①、对象的属性
包含在对象内部的变量称为对象的属性,它是用来描述对象特性的一组数据。获取或设置对象的属性值的语法格式如下:
对象名.属性值
通常属性名就是一个字符串,所以属性名可以是任何值,没有什么特殊要求。但是如果你起的属性名太过特殊,不能直接使用,需要使用 [] 来设置;我们也可以使用符号(symbol)作为属性名来添加属性,获取这种属性时,也必须使用 symbol;使用 symbol 添加的属性,通常是那些不希望被外界访问的属性;
对象的属性值可以是任意的数据类型,也可以是一个对象;
对象属于可变类型,对象创建完成后,可以任意的添加删除修改对象中的属性;
如果有两个变量指向同一个对象,通过一个变量修改对象时,对另外一个变量也会产生影响;
②、对象的方法
包含在对象内部的函数称为对象的方法,它可以用来实现某个功能。调用对象的一个方法的格式如下:
对象名.方法名(参数)
在 JS 中,对象就是属性和方法的集合,这些属性和方法也叫做对象的成员。方法是作为对象成员的函数,表明对象所具有的行为;而属性是作为对象成员的变量,表明对象的状态;
1.3、JS对象的种类
在 JS 中可以使用 3 种对象,即 自定义对象、内置对象 和 浏览器对象。内置对象和浏览器对象又称为预定义对象。
在 JS 中将一些常用的功能预先定义成对象,这些对象用户可以直接使用,这种对象就是 内置对象。内置对象可以帮助用户在编写程序时实现一些最常用、最基本的功能,例如 Math、Date、String、Array、Number、Boolean、Global、Object 和 RegExp 对象等。
浏览器对象 是浏览器根据系统当前的配置和所装载的页面为 JavaScript 提供的一些对象。例如 Document、Window 对象等。
内置对象 就是用户根据需要自己定义的新对象。
二、自定义对象的创建
2.1、直接自定义对象
直接创建自定义对象的语法格式如下:
let 对象名 = {
// 属性
属性名1:属性值1,
属性名2:属性值2,
...
// 方法
方法1(形参列表){
},
方法2(形参列表){
},
...
}
由语法格式可以看出,直接创建自定义属性时,属性可以放在大括号内,属性之间用逗号分隔,每个属性都由属性名和属性值两个部分组成,属性名和属性值之间用冒号隔开;
let person = {
// 属性
name:'Sakura',
['age'] : 10,
// 方法
sleep(){
console.log(this.name + '睡觉了');
},
eat(){
console.log(this.name + '吃饭了');
}
};
person.gender = '女';
console.log(person);
person.sleep();
person.eat();
2.2、通过Object对象创建对象
Object 对象是 JS 中内部对象,它提供了对象的最基本功能,这些功能构成了所有其它对象的基础。Object 对象提供了创建自定义对象的简单方式,通过这种方式可以在程序运行时为 JS 对象随意添加属性。
创建 Object 对象的语法如下:
obj = new Object([value])
参数说明:
- obj:必选项,要赋值为 Object 对象的变量名
- value:可选项,任意一种基本数据类型。如果 value 为一个对象,则返回不做任何改动的该对象。如果 value 为 null 或 undefined,或者没有给出,则产生没有内容的对象。
使用 Object 对象可以创建出一个没有任何属性的空对象。如果要设置对象的属性,只需要将一个值赋给对象的新属性即可。
// 创建对象,new可以省略
let obj = new Object();
console.log(obj);
// 向对象中添加属性:对象.属性名 = 属性值
obj.name = 'Sakura';
obj.age = 10;
obj.gender = '女';
console.log(obj);
三、操作对象
- 向对象中添加属性:
对象.属性名 = 属性值
- 向对象中添加方法:
对象.方法名 = function(){方法体;}
或对象.方法名 = () => {方法体;}
- 读取对象的属性:
对象.属性名
- 如果读取的是一个对象中没有的属性,不会报错而是undefined
- 执行对象的方法:
对象名.方法名();
- 修改属性:
对象.属性名 = 属性值
- 删除属性:
delete 对象.属性名
// 创建对象,new可以省略
let obj = Object();
console.log(obj);
// 向对象中添加属性:对象.属性名 = 属性值
obj.name = 'Sakura';
obj.age = 10;
obj.gender = '女';
// 向对象中添加方法:对象.方法名 = function(){方法体;}
obj.hello = function(){
console.log('My name is ' + this.name)
}
// 向对象中添加方法:对象.方法名 = () => {方法体;}
obj.sleep = () => {
console.log('在睡觉')
}
console.log(obj);
// 读取对象的属性:对象.属性名
// 如果读取的是一个对象中没有的属性,不会报错而是undefined
console.log(obj.name);
// 执行对象的方法:对象名.方法名();
obj.hello();
obj.sleep();
// 修改属性:对象.属性名 = 属性值
obj.age = 12;
console.log(obj);
// 删除属性:delete 对象.属性名
delete obj.gender
console.log(obj)
四、访问对象
4.1、for...in语句
for...in 语句用来了遍历对象的每一个属性,且每次都将属性名作为字符串保留在变量里。语法格式如下:
for(变量 in 对象){
语句;
}
参数说明:
- 变量:用于存储某个对象的所有属性名
- 对象:用于指定要遍历属性的对象
- 语句:用于指定循环体
for...in 语句用于对某个对象的所有属性进行循环操作。将某个对象上的所有属性名称依次赋值给同一个变量,而不需要事先知道对象的属性的个数。
let obj = {
name:'Sakura',
age:10,
gender:'女',
[Symbol()]:'测试的属性' // 符号添加的属性是不能遍历(枚举)的
};
for(let proName in obj){
console.log(proName + ':' + obj[proName]);
}
应用 for...in 语句遍历对象的属性,在输出属性值时一定要使用数组的形式(
对象名[属性名]
)进行输出,而不能使用“对象名.属性名”这种形式;并不是所有的属性都可以遍历(枚举),比如使用符号添加的属性
4.2、with语句
with 语句用来在访问一个对象的属性和方法时,避免重复引用指定对象的对象名。使用 with 语句可以简化对象属性调用的层次。语法如下:
with(对象名称){
语句;
}
参数说明:
- 对象名称:用于指定要操作的对象名称;
- 语句:要执行的语句,可直接引用对象的属性名或者方法名
在一个连续的代码程序中,如果多次使用某个对象的多个属性和方法,那么只需要在 with 关键字后的括号中写出对象实例的名称,就可以在随后的大括号中的程序语句中直接引用该对象的属性名和方法名,不必在每个属性或方法名都加上对象实例名和“.”。
let person = {
name:'Sakura',
age : 10,
sleep(){
console.log(this.name + '睡觉了');
},
eat(){
console.log(this.name + '吃饭了');
}
};
with(person){
console.log(name);
console.log(age);
sleep();
eat();
}
标签:console,log,05,对象,obj,方法,属性
From: https://www.cnblogs.com/nanoha/p/17064089.html