首页 > 其他分享 >05. 对象

05. 对象

时间:2023-01-21 23:23:11浏览次数:38  
标签:console log 05 对象 obj 方法 属性

一、对象简介

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

相关文章

  • day07-Spring管理Bean-IOC-05
    Spring管理Bean-IOC-053.基于注解配置bean3.3自动装配基本说明:基于注解配置bean,也可以实现自动装配,使用的注解是:@AutoWired或者@Resource@AutoWired的规则说明(1......
  • 【学懂Java】(四)面向对象编程-3
    一.代码块1.概念使用”{}”括起来的一段代码2.分类根据位置可分类普通代码块:定义在方法中的使用{}括起来的代码publicclassCodeBlockDemo{publicvoidtest(){......
  • 【学懂Java】(四)面向对象编程-4
    一.继承(面向对象编程四大特征)继承优化前:代码重复,不利于修改继承优化后:代码简明,利于修改1.概念类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。提高......
  • JS_11_操作form对象
    通过操作form对象,咱可以动态进行数据提交。  一、form对象获取form对象://使用id值获取form对象varfrm=document.getElementById('frm_id');//使用name值获......
  • LeetCode.面试题02.05-链表求和-题解分析
    题目来源面试题02.05.链表求和题目详情给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并......
  • java读取Excel成List对象数组
    文件IO是任何软件进行的重要组成部分,我们在电脑上创建一个Excel文件,然后打开它修改一些东西或者删除它。Java给我们提供了操纵文件的很多工具类,本文主要是使用POI操纵Excel......
  • open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将
    参考文章:​​http://forum.ubuntu.org.cn/viewtopic.php?t=458707​​我的环境:XXX@Kylin:~/桌面$cat/proc/versionLinuxversion3.16.0-30-generic(buildd@phianna)(g......
  • C++基础语法 3(面向对象、C++在执行过程当中4个区域、引用)
    #include<iostream>usingnamespacestd;//标注空间#include<string>#include<time.h>#include<cstdlib>//面向对象/*C++在执行过程当中4个区域:代码区:存放二进制代码,由操作......
  • 05常用数学统计函数
    importnumpyasnparr=np.arange(12).reshape(3,4)print(arr)print(np.sum(arr))print(np.prod(arr))print(np.cumsum(arr))print(np.cumprod(arr))print(n......
  • 05-路由-请求之时
    这一篇博客我们尝试使用调试,看看整个请求是怎么触发的,也就是从Django接收到请求到调用具体的视图的流程,我们不尝试探讨整条链路,那样太多了。他们将会在后续的章节中讲解。......