JavaScript——对象的创建

目录

任务描述

相关知识

对象的定义

对象字面量

通过关键字new创建对象

通过工厂方法创建对象

使用构造函数创建对象

使用原型(prototype)创建对象

编程要求

任务描述

本关任务:创建你的第一个 JavaScript 对象。

相关知识

JavaScript 是一种基于对象(Object-based)的语言,在 JavaScript 中,对象的创建和 Java 不同,既有 Java 使用的构造函数方式,也有其他方法。

对象的定义

JavaScript 中的一切都是对象,这是该语言一个很大的特点。像字符串、数组等已经定义的对象叫做内置对象。用户自己也可以定义对象,叫做自定义对象。本实训讲的对象特指自定义对象,自定义对象指数据和函数(又叫方法)的集合。数据指变量名和变量的值构成的组合。如图1所示:

图1

下面介绍五种创建对象的方法,其中通过对象字面量和使用构造函数创建对象最常用。

对象字面量

这是最常用的创建对象的方法,通过新建一个键值对的集合(对象字面量)创建对象,如下:

var song = {name:"Liekkas",time:180,"song language":English,singer: {singerName:"Sofia Jannok",singerAge:30}
};

键值对中的键指的是属性的名字,若其中含有空格,名字需要用双引号包含在内。值指的是属性的值,可以是基本类型:如字符串,数字,布尔型,也可以是一个对象。键值对之间用逗号隔开,最后一个键值对后面没有逗号,所有的键值对在一个大括号中。

通过关键字new创建对象

通过new关键字创建对象也是一个常用的方法。如下:

var Store = new Object();    // 创建对象的一个实例
Store.name = "lofo Market";
Store.location = "NO.13 Five Avenue";
Store.salesVolume = 1000000;

通过上面的代码,我们就能创建一个名为Store的对象。

通过工厂方法创建对象

工厂方法就是通过函数创建对象,函数封装了创建对象的过程。

这是一种通过函数创建对象的方法,函数封装了对象的创建过程,创建新对象时只需要调用该函数即可。这种方法适合于一次创建多个对象。

// 对象的创建函数
function createStoreObject(name,location,salesVolume) {var store = new Object();store.name = name;store.locaion = location;store.salesVolume = salesVolume;store.display = function() {console.log(this.name);};return store;
}
// 利用该函数创建一个对象
var store1 = createStoreObject("panda express","No.1,People Street",200000);

这样就创建了一个名为store1的对象,注意这个对象除了属性之外还有一个方法display。要创建更多的类似store1的对象,直接调用该函数即可。

使用构造函数创建对象

上面虽然也是通过函数创建对象,但不是构造函数,只是普通函数。构造函数名必须以大写字母开头,函数体内没有返回语句。

// 构造函数
function Store(name,location,salesVolume) {this.name = name;this.locaion = location;this.salesVolume = salesVolume;
}
// 创建对象的实例
var myStore = new Store("KeyExp","No.1,L.Street",540000);

上面的代码首先是Store对象的构造函数,然后用该构造函数创建了Store对象的一个实例myStore

使用原型(prototype)创建对象

当我们创建一个函数时,函数就会自动拥有一个prototype属性,这个属性的值是一个对象,这个对象被称为该函数的原型对象。也可以叫做原型。

当用new关键字加函数的模式创建一个对象时,这个对象就会有一个默认的不可见的属性[[Prototype]],该属性的值就是上面提到的原型对象。如图2所示:

图2

JavaScript 中每个对象都有一个属性[[Prototype]],指向它的原型对象,该原型对象又具有一个自己的[[Prototype]],层层向上直到一个对象的原型为null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。如图3所示:

图3

这种方法是对使用构造函数创建对象的改进,使用构造函数创建一个对象时,会把构造函数中的方法(上面的构造函数只有属性的键值对,没有方法)都创建一遍,浪费内存,使用原型不存在这个问题。

function Store() {};
Store.prototype.name = "SF Express";
Store.prototype.locaion = "Hong Kong";
Store.prototype.salesVolume = 1200000000;
// 创建对象
var myStore = new Store();
// 创建一个新的对象
var hisStore = new Store();
hisStore.name = "STO Express";    // 覆盖了原来的name属性

这种方法的好处是,创建一个新的对象时,可以更改部分属性的值。

编程要求

本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,具体要求如下:

  • 使用对象字面量方法创建名为student的对象,有两个属性namegender,他们的值分别是mainJs()函数的参数a和参数b

  • 使用已给的构造函数Car(plate,owner)创建一个对象myCar,它的两个属性的值分别是参数c和参数d

  • 使用原型创建一个对象myJob,它的构造函数是Job(company,salary),它的两个属性的值已经被设置,你需要用参数e覆盖属性company的值;

function Car(plate,owner) {this.plate = plate;this.owner = owner;
}function Job() {};
Job.prototype.company = "myCompany";
Job.prototype.salary = 12000;function mainJs(a,b,c,d,e) {//请在此处编写代码/*********bigin*********/var student = {name: a,gender: b,};var myCar = new Car(c, d);var myJob = new Job();myJob.company = e;/*********end*********/return student.name+student.gender+myCar.plate+myCar.owner+myJob.company;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/38969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python最基础

基本的类 python最基础、最常用的类主要有int整形,float浮点型,str字符串,list列表,dict字典,set集合,tuple元组等等。int整形、float浮点型一般用于给变量赋值,tuple元组属于不可变对象&#…

Linux网络 namespaces与Docker网络隔离技术

Linux网络命名空间(Network Namespaces)是Linux内核中一项重要的隔离技术,它允许系统中存在多个完全独立的网络栈,每个网络栈有自己的网络设备、IP地址、路由表、网络接口、防火墙规则等,从而在不同的命名空间之间实现…

面向物联网行业的异常监控追踪技术解决方案:技术革新与运维保障

在现代高度数字化和互联的环境中,物联网技术已经深入到我们生活的方方面面。特别是在家庭和工业环境中,物联网系列通讯作为连接各类设备的关键枢纽,其稳定性和可靠性显得尤为重要。本文将介绍一种创新的监控系统,旨在实时跟踪和分…

MySQL数据库的主从复制与读写分离

一、MySQL数据库的主从复制 1.主从复制的概述及原理 (1)主从复制的意义 在实际的生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此&#xff…

MySQL入门学习-备份与恢复.数据导入和导出

一、MySQL 提供了多种数据备份和恢复的方法,每种方法都有其特点和适用场景。以下是一些常见的备份和恢复方法及它们的特点: 1. 使用 mysqldump 工具进行逻辑备份: - mysqldump 是最常用的 MySQL 备份工具之一,它可以将数据库中的…

使用Java实现智能物流管理系统

使用Java实现智能物流管理系统 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何使用Java语言实现智能物流管理系统,这是一个涉及到…

C语言使用先序遍历创建二叉树

#include<stdio.h> #include<stdlib.h>typedef struct node {int data;struct node * left;struct node * right; } Node;Node * createNode(int val); Node * createTree(); void freeTree(Node * node);void preOrder(Node * node);// 先序创建二叉树 int main()…

【高性能服务器】多进程并发模型

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 对于常见的C/S模型…

【深度学习】注意力机制的改进:稀疏注意力、局部注意力、低秩/线性注意力

文章目录 稀疏注意力PVT v2中的稀疏注意力公式 代码示例 局部注意力局部注意力Swin Transformer中的基于窗口的注意力公式 代码示例窗口移位操作&#xff08;Shifted Window&#xff09;实现细节公式代码示例 低秩/线性注意力低秩/线性注意力Linformer公式 代码示例代码解释 稀…

事务的影子拷贝-系统架构师(二十)

1、&#xff08;重点&#xff09;企业信息集成按照组织范围分为企业内部的信息集成和外部信息集成。在企业内部信息集成中&#xff0c;&#xff08;&#xff09;实现了不同系统之间的互操作&#xff0c;使的不同系统之间能够实现数据和方法的共享。&#xff08;&#xff09;实现…

Unity小知识

1.当我们把摄像机的内容渲染到RenderTexture上而不是屏幕上时,那么相机的Aspect默认会设置成和RenderTexture的分辨率一样.不过最终如果把RenderTexture作为贴图贴到模型上去的时候还是会被UV拉伸和缩小的。 2.要想自定义UnityPackage的内容&#xff0c;只要找到UnityProject/L…

H5与小程序:两者有何不同?

H5&#xff0c;即HTML5&#xff0c;是构建Web内容的一种语言描述方式&#xff0c;也是互联网的下一代标准&#xff0c;被认为是互联网的核心技术之一。HTML5是在HTML4.01的基础上进行了一定的改进后的规范&#xff0c;用户在使用任何手段进行网页浏览时看到的内容原本都是HTML格…

GPT对话代码库——HAL库下 USART 的配置及问题(STM32G431CBT6)

目录 1&#xff0c;问&#xff1a; 1&#xff0c;答&#xff1a; 示例代码 正确的HAL库初始化方式 自定义初始化方式&#xff08;不推荐&#xff09; 总结 2&#xff0c;问&#xff1a; 2&#xff0c;答&#xff1a; 代码详细解释 初始部分 主初始化部分 初始化调用…

QT学习积累——如何提高Qt遍历list的效率

目录 引出Qt遍历list提高效率显示函数的调用使用&与不使用&除法的一个坑 总结自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式返回值mutable修饰案例 引出 QT学习积累——如何提高Qt遍历list…

python 操作网页

使用selenium库获取网页元素的属性值是一个常见的需求。以下是一个Python代码示例,展示了如何使用selenium来获取一个链接的href属性以及一个输入框的value属性。 首先,请确保您已经安装了selenium库,并且配置了WebDriver(如ChromeDriver)以驱动浏览器。 pythonfrom sele…

如何避免Java中的内存泄漏?

如何避免Java中的内存泄漏&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java开发中&#xff0c;内存泄漏&#xff08;Memory Leak&#xff0…

CSF视频文件格式转换WMV格式(2024年可用)

如果大家看过一些高校教学讲解视频的话&#xff0c;很可能见过这样一个难得的格式&#xff0c;".csf "&#xff0c;非常漂亮 。 用暴风影音都可以打开观看&#xff0c;会自动下载解码。 但是一旦我们想要利用或者上传视频的时候就麻烦了&#xff0c;一般网站不认这…

STM32重定向printf到串口(重写fputc不生效)

使用STM32开发&#xff0c;想用printf把输出打印到串口&#xff0c;需要重定向printf函数。 网上一搜全都是重写fpuc的&#xff0c;但这只针对使用了MicroLIB的情况&#xff0c;如果你使用STM32CubeMX配置了CMake或者Makefile项目&#xff0c;这种方法是根本不可行的&#xff0…

为什么PS5运行游戏的效果往往比号称更强大的Xbox Series X更好?

在第九代游戏机即将进入第四个年头之际&#xff0c;有一个问题仍未得到解答&#xff1a;索尼的 PS5 游戏机的性能如何经常超越纸面性能更强大的微软 Xbox X 系列&#xff1f; 几个明显的例子包括《生化危机 4》、《使命召唤&#xff1a;黑色行动&#xff1a;冷战》和新一代更新…

【支撑文档】系统安全保证措施(word原件)

软件安全保证措施word 软件所有全套资料获取进主页或者本文末个人名片直接。