在这篇文章中我将会着重说明如何创建JavaScript里的对象(Object)。

对象(Object)是什么?

在开始介绍如何创建对象前,我们要知道对象是什么。对象(Object)简单地来说,就是一堆「名称- 值」的配对(key - value pairs)。至于可以放入哪些值呢?

第一种是原生的值(primitive),像是布尔值(Boolean)、数值(Number)或是字符串(String),而在对象当中,我们把这类的值称为属性(Property)。

第二种可以放入的值是对象(Object),也就是在一个对象里面再嵌入一个对象,这种以对象为值的情况我们也把它称作属性(Property)。

第三种放入的值可以是函数(function),在对象的情况下,我们会把这种函数称做方法(method)。在对象中的每一个Property或是Method都会占据电脑当中一个记忆体的位置,在需要使用到的时候,把它们调取出来。

接下来我将介绍三种创建JavaScript里的对象及如何调用的方法:

方法一:使用 [ ]

创建对象

创建对象的第一个方法是使用[ ],[ ]在JavaScript中被称做Computed Member Access

让我们看一下底下的例子:

// 创建对象

这是利用[ ]创建对象的方法,首先我们创建一个对象,叫做person,接着开始给它「名称-值」配对,例如,firstname是属性的名称,Jay则是它的值;lastname也是属性名称,Chou则是它的值。通过这种方法,我们就可以创建对象里面的各种「名称-值」配对。

调用对象

紧接上面的例子,我们也同样可以利用[ ]来调用已经建立好的对象,[ ]里面如果放的是字符串而不是变量,注意要记得加上引号'像是这样:

// 调用对象

另外,如果是通过[ ]来调用对象的话,还有一个特别的地方,就是[ ]内可以放变量,像是这样(当[ ]里面放的是变量时不用加引号"),一样可以调用到对象的值,这个是用种方法二(.)做不到的:

// 调用对象

方法二:使用点符号 .

创建对象

第二种创建对象的方法是使用英文的句点 .,在JavaScript中被称做Member Access,创建的方法如下:我们在刚刚创建的person这个对象里面,再创建一个对象属性,名称为address。其实,我觉得可以把.翻译成中文的「的」,所以这里的意思就是,在person的里面创建一个名称为address的对象;在person的address的country,创建一个值为"China",以此类推...。

// 创建对象

调用对象

同样的方法也可以用来调用出该对象的值:

// 调用对象

从上面可以看出,. 和[ ]是可以交替使用的。

方法三:使用{ }

创建对象

其实还有在创建对象上有更快的做法,我们可以直接使用{ },我们可以把上面的代码,改成这样:

// 创建对象

通过这种方式,可以得到与方法二一模一样的结果,调用方法也一致。

搭配函数使用对象

在我们创建好对象后,我们可以搭配函数(function)来使用对象,例如,我先把刚刚创建的对象person,改成叫做jaychou。

var 

接着创建一个名称为SayHI的函数,并且带入我们的对象:

function 

直接在函数参数的地方创建对象

我们也可以直接在调用函数的同时创建对象,像是这样子:

SayHI

一开始看到这样的写法可能会觉得很奇怪,但其实这种方式和我们直接在函数的参数里面输入字符串或数值是一样的意思,只是这里是创建一个对象。我们把这种直接在函数的参数中创建对象的方法称做"creating object on the fly"(即动态创建对象)。

其他说明

其实使用new Object不是创建对象最好的方式,这点会在之后的文章再作说明。另外,虽然使用[ ]和.都可以拿来创建对象和调用对象,但还是建议尽量使用点符号.作为创建对象和调用对象的方法,这样比较干净简洁,在debug的时候也比较容易。

还有不论你使用的是new Object、" . "、或者直接用"{ }"来创建对象,其实在JavaScript转译之后,本质上做的都是同样的事。它都会将这个对象建立在内存中,并创建该对象的属性(property)和方法(method)在内存中。

如果觉得文章对你有些许帮助,欢迎在我的GitHub博客点赞和关注,感激不尽!

javascript 无法修改 数组中对象_谈谈JavaScript中对象建立(Object)相关推荐

  1. this调用语句必须是构造函数中的第一个可执行语句_谈谈JavaScript中的函数构造式和new关键字...

    您是否曾困惑于 Javascript 中的new关键字呢?是否曾想理解关于 function 和 constructor 的区别是什么呢? 大多数 Javascript 的新开发者不太想要使用new关 ...

  2. javascript中对象_了解JavaScript中的承诺

    javascript中对象 我向您承诺,到本文结束时,您将更好地了解JavaScript. 我与JavaScript有一种"爱与恨"的关系. 但是尽管如此,JavaScript一直 ...

  3. android json字符串转成json对象_在PHP中处理JSON数组以及对象

    php中文网最新课程 每日17点准时技术干货分享 在 PHP 中处理 JSON 数组以及对象 与客户端混淆的常见原因是围绕 JSON 数组和对象,以及如何在 PHP 中指定他们.特别是,问题是由空对象 ...

  4. java jsonobject 转对象_解析JSON中JSONObject的高级使用

    文末会有读者福利 简介: 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON.JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于 ...

  5. jsonobject转map对象_解析JSON中JSONObject的高级使用

    简介: 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON.JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成.易 ...

  6. java 异常对象_在java中的异常处理中的异常对象是什么

    展开全部 Exception类以及他的子类 的一个实例对象 比如32313133353236313431303231363533e58685e5aeb931333264633563 常见异常 1. j ...

  7. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  8. python元类是什么_谈谈Python中元类Metaclass(一):什么是元类

    简单的讲,元类创建了Python中所有的对象. 我们说Python是一种动态语言,而动态语言和静态语言最大的不同,就是函数和类不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个HelloW ...

  9. java如果把字符串转成对象_为什么Java中的字符串对象是不可变的,有什么好处?...

    专注于Java领域优质技术号,欢迎关注 原创: 阿杜的世界 阅读本文大概需要 4分钟. 所谓不可变对象,是指一个对象在创建后,它的内部状态不会被改变的对象.这意味着当我们将一个不可变对象的引用赋值给某 ...

最新文章

  1. 如何估算文章阅读时长?
  2. alter system|session set events转储
  3. python创建追加_Python文件的创建与追加
  4. C++ STL deque创建
  5. python2 urllib2_python2.7 urllib和urllib2
  6. 总结-linux初识进程(包括cpu调度、进程创建、僵尸进程(重点)、环境变量)
  7. 计蒜客挑战难题:爬楼梯
  8. linux驱动头文件说明
  9. 蓝筹股、红筹股的含义
  10. DoTween插件使用
  11. 基于 Redis 的分布式锁到底安全吗(上)?
  12. python静态方法_python的静态方法和类方法
  13. 最简单的STM32入门教程----闪烁LED
  14. html网页加线条,「网站特效」html5 canvas粒子线条特效制作方法
  15. u盘启动计算机看不到硬盘,U盘启动找不到硬盘的解决方案
  16. js原生拖拽的两种方法
  17. 3dmax全套黄金自学教程
  18. 什么软件可以查手机卡的imsi_手机SIM卡卡号和IMSI码怎么查询
  19. 分位数Quantiles
  20. 云原生时代的业务流程编排

热门文章

  1. WSDM2022 | 数据困境: 我们究竟有多了解推荐系统数据集?(附视频、论文及代码)...
  2. 【报告分享】2021年度私域经营洞察报告.pdf(附下载链接)
  3. 【报告分享】巨量算数:疫情期间汽车专题研究洞察.pdf(附下载链接)
  4. 分治-寻找第k小的数
  5. 知识图谱上的双塔召回:阿里的IntentGC模型
  6. 【论文复现】Hierarchical Attention Networks for Document Classification
  7. python post cookies_python 之post、get与cookie实战
  8. php设计一个盒子类代码_PHP设计模式之简单工厂模式(Simple Factory)代码实例大全(七)...
  9. Leetcode每日一题:463.island-perimeter(岛屿的周长)
  10. Leetcode每日一题:142.linked-list-cycle-ii(环形链表Ⅱ)