JavaScript中如何创建对象

在JavaScript中,创建对象有多种方法。以下是几种常见的方式:

1. 对象字面量

这是最直接和常用的创建对象的方法。使用花括号 {} 包围一组键值对来定义一个对象。

let person = {name: "John",age: 30,greet: function() {console.log("Hello, my name is " + this.name);}
};person.greet(); // 输出: Hello, my name is John

2. 构造函数

构造函数是一种特殊的函数,用于创建和初始化对象。构造函数的名字通常以大写字母开头,以区别于普通函数。使用 new 关键字调用构造函数会创建一个新的对象实例。

function Person(name, age) {this.name = name;this.age = age;this.greet = function() {console.log("Hello, my name is " + this.name);};
}let person1 = new Person("Alice", 25);
let person2 = new Person("Bob", 35);person1.greet(); // 输出: Hello, my name is Alice
person2.greet(); // 输出: Hello, my name is Bob

注意:在构造函数中定义的方法(如 greet)会在每个实例上都被创建一次,这可能会导致内存浪费。更好的做法是使用原型(prototype)来共享方法。

3. ES6 类(Class)

ES6 引入了 class 语法,它是基于构造函数的语法糖,提供了更清晰和面向对象的方式来创建和继承对象。

class Person {constructor(name, age) {this.name = name;this.age = age;}greet() {console.log("Hello, my name is " + this.name);}
}let person3 = new Person("Charlie", 40);
person3.greet(); // 输出: Hello, my name is Charlie

使用类时,方法会自动添加到原型上,因此它们是在所有实例之间共享的。

4. Object.create()

Object.create() 方法允许你基于一个现有的对象来创建一个新对象,新对象会继承现有对象的属性和方法。

let personProto = {greet: function() {console.log("Hello, my name is " + this.name);}
};let person4 = Object.create(personProto);
person4.name = "David";
person4.age = 45;person4.greet(); // 输出: Hello, my name is David

5. 工厂函数

工厂函数是一种创建对象的函数,但它不使用 thisnew。工厂函数返回一个对象字面量。

function createPerson(name, age) {return {name: name,age: age,greet: function() {console.log("Hello, my name is " + this.name);}};
}let person5 = createPerson("Eve", 50);
person5.greet(); // 输出: Hello, my name is Eve

每种方法都有其适用的场景和优缺点。选择哪种方法取决于你的具体需求和代码风格。

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

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

相关文章

C++ 基础思维导图(一)

目录 1、C基础 IO流 namespace 引用、const inline、函数参数 重载 2、类和对象 类举例 3、 内存管理 new/delete 对象内存分布 内存泄漏 4、继承 继承权限 继承中的构造与析构 菱形继承 1、C基础 IO流 #include <iostream> #include <iomanip> //…

Java - 日志体系_Apache Commons Logging(JCL)日志接口库_桥接Logback 及 源码分析

文章目录 PreApache CommonsApache Commons ProperLogging &#xff08;Apache Commons Logging &#xff09; JCL 集成logbackPOM依赖配置文件 logback.xml使用 源码分析jcl-over-slf4j 的工作原理1. LogFactory 的实现2. SLF4JLogFactory 和 Log 的实例化过程3. SLF4JLog 和 …

中小企业如何进行数字化转型?

​在这个日新月异的数字时代&#xff0c;企业数字化转型已成为不可逆转的潮流与战略选择。大数据、云计算、人工智能、物联网等前沿科技正重塑着各行各业的面貌。面对激烈的市场竞争和不断变化的客户需求&#xff0c;中小企业作为国民经济的重要组成部分&#xff0c;数字化转型…

闪存知识科普-基本储存单元结构

概述&#xff1a; 闪存&#xff0c;即FlashMemory。其基本储存单元&#xff08;Memory Cell&#xff09;如下图所示。看起来有点像N沟道&#xff08;N-Channel&#xff09;MOS管&#xff0c;但比MOS管多一个悬浮闸&#xff08;Floating Gate&#xff09;。悬浮闸内可以储存电荷…

[江科大STM32] 第五集快速建立STM32工程模板——笔记

保存&#xff0c;进去选芯片型号&#xff0c;我们是F10C8T6 一个MD&#xff0c;还有所有.c.h 这里所有文件 这里所有文件

Elasticsearch:基础概念

一、什么是Elasticsearch Elasticsearch是基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展数据存储和矢量数据库。它针对生产规模工作负载的速度和相关性进行了优化。使用 Elasticsearch 可以近乎实时地搜索、索引、存储和分析各种形状和大小的数据。Elasticsearch 是…

安卓播放器TVbox或影视仓软件如何链接到xiaoya小雅超集?很详细的教程

前言 这里咱们说的安卓播放器软件指的是这个&#xff1a; 还有这个&#xff1a; 这两个软件只是个壳&#xff0c;你需要做的仅仅是把需要的内容填写到对应的位置即可。 开始这个教程之前&#xff0c;你需要先部署好小雅&#xff0c;如果没有部署小雅&#xff0c;这个教程基本…

Datawhale AI冬令营 动手学AI Agent

背景——什么是Agent 在人工智能领域&#xff0c;agent可以指一个能够感知环境并作出决策以实现特定目标的系统。比如&#xff0c;一个聊天机器人&#xff08;chatbot&#xff09;就是一个agent&#xff0c;它能够理解用户的输入并给出相应的回复。 学习目标 学会使用百宝箱平…

如何在IDEA一个窗口中导入多个项目

一般在IDEA窗口中想导入一个新项目&#xff0c;会提示我们在当前窗口还是新窗口。如果选新窗口&#xff0c;就会新打开一个窗口&#xff0c;此时新窗口里面只有新导入的项目。 而为了浏览起来更方便&#xff0c;需要实现在IDEA一个窗口中导入多个项目。具体步骤如下&#xff1…

面试经典问题 —— 链表之返回倒数第k个节点(经典的双指针问题)

目录 原题思路代码实现小结 原题 leetcode链接 &#xff1a; https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/description/ 思路 这题就是典型的双指针母题 第一个指针先移动k步&#xff0c;然后第二个指针再从头开始&#xff0c;这个时候这两个指针同时移动&am…

VMware安装配置

1、官网下载VMware16 &#xff08;1&#xff09;进入VMware官网https://www.vmware.com/cn.html&#xff0c;之后点击下载里的Workstation Pro&#xff1a; &#xff08;2&#xff09;之后选择你要下载的VMware的版本&#xff0c;找到合适的下载&#xff0c;我这里以Windows系…

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(五)

****非斜体正文为原文献内容&#xff08;也包含笔者的补充&#xff09;&#xff0c;灰色块中是对文章细节的进一步详细解释&#xff01; 五、 解释评估&#xff08;Explanation Evaluation&#xff09; 在前面的章节中&#xff0c;我们介绍了不同的解释技术和它们的用途&#…

SQL 中的 EXISTS

我们先从 SQL 中最基础的 WHERE 子句开始。 比如下面这条 SQL 语句&#xff1a; 很显然&#xff0c;在执行这条 SQL 语句的时候&#xff0c;DBMS 会扫描 Student 表中的每一条记录&#xff0c;然后把符合 Sdept IS 这个条件的所有记录筛选出来&#xff0c;并放到结果集里面去…

C语言链表通关文牒0.5

之前排序创建链表那里用的是哨兵法&#xff0c;但是有局限性&#xff0c;这里介绍一个补充&#xff0c;不创建第一个空节点进行排序 NODE *create() {int val;NODE *head NULL; // 初始化头指针为NULLNODE *pC NULL; // 初始化指针&#xff0c;用于遍历链表while(1) {pri…

GAN对抗生成网络(一)——基本原理及数学推导

1 背景 GAN(Generative Adversarial Networks)对抗生成网络是一个很巧妙的模型&#xff0c;它可以用于文字、图像或视频的生成。 例如&#xff0c;以下就是GAN所生成的人脸图像。 2 算法思想 假如你是《古董局中局》的文物造假者&#xff08;Generator,生成器&#xff09;&a…

基于Python的携程旅游景点数据分析与可视化

基于Python的携程旅游景点数据分析与可视化 爬取景点、价格、开放状态、评论、热度、优惠政策等信息。 功能列表 指定城市爬取支持登录支持筛选支持评论爬取支持数据存在数据库支持生成Excel支持可视化 部分效果演示 爬取的旅游景点信息 生成Excel 指定城市爬取 可视化 部门…

SQL-leetcode-197. 上升的温度

197. 上升的温度 表&#xff1a; Weather ---------------------- | Column Name | Type | ---------------------- | id | int | | recordDate | date | | temperature | int | ---------------------- id 是该表具有唯一值的列。 没有具有相同 recordDate 的不同行。 该表包…

等待事件 ‘latch: row cache objects‘ 说明及解决方法

早上刚来的时候&#xff0c;收到zabbix 数据库连接数增长的告警&#xff0c;同时应用负责人也说查询很慢、很卡 查看该时间段 最多的等待事件 SELECT event,COUNT(1) num FROM V$ACTIVE_SESSION_HISTORY A WHERE A.SAMPLE_TIME BETWEEN TO_DATE(2025-01-02 09:00:00, YYYY-M…

HAL 库------中断相关函数

HAL_SuspendTick();是对SysTick中CTRL寄存器中TICKINT位清0 HAL_ResumeTick(); 刚好与上面函数相反&#xff0c;对SysTick中CTRL寄存器中TICKINT位置1&#xff0c;恢复stick中断。

IDEA开发Java应用的初始化设置

一、插件安装 如下图所示&#xff1a; 1、Alibaba Java Coding Guidelines 2.1.1 阿里开发者规范&#xff0c;可以帮忙本地自动扫描出不符合开发者规范的代码&#xff0c;甚至是代码漏洞提示。 右击项目&#xff0c;选择《编码规约扫描》&#xff0c;可以进行本地代码规范扫…