当前位置: 首页 > article >正文

JavaScript 里创建对象

咱们来用有趣的方式探索一下 JavaScript 里创建对象的各种“魔法咒语”!

想象一下,你是一位魔法工匠,想要在你的代码世界里创造各种奇妙的“魔法物品”(也就是对象)。你有好几种不同的配方和工具:

1. 随手捏造(对象字面量 {}

  • 场景:你想快速做一个独一无二的小玩意儿,比如一个特定的史莱姆或者一个临时的治疗药水。不需要模板,直接用魔法黏土捏出来就行。
  • 咒语const mySlime = { color: 'green', hp: 10 };
  • 特点最常用、最直观。适合创建结构简单、数量不多的对象,或者作为函数的参数/返回值。重点:简单快捷,一次性创作。

2. 标准零件订购(new Object()

  • 场景:你有一个标准的零件目录 (Object),然后一件一件地告诉工坊你要什么零件 (car.make = 'Toyota'),最后组装起来。
  • 咒语const myGolem = new Object(); myGolem.material = 'stone'; myGolem.power = 50;
  • 特点:比较古老,有点啰嗦,现在很少直接用。和随手捏造效果差不多,但写法不一样。重点:基础但繁琐,不如字面量方便。

3. 批量生产模具(构造函数 function Recipe(...) + new

  • 场景:你要制造一大堆属性结构相似的魔法傀儡。你先设计一个“傀儡模具”(构造函数),规定好每个傀儡需要哪些核心材料(参数 name, material)。每次施法 new Recipe(...),就能用模具“Duang”地一下造出一个新的傀儡实例。
  • 咒语
    function Golem(name, material) {this.name = name;this.material = material;this.activate = function() { console.log(this.name + " 启动!"); }; // 每个傀儡自带启动按钮
    }
    // 共享技能书 (prototype)
    Golem.prototype.smash = function() { console.log(this.name + " 发动重击!"); };const golem1 = new Golem("石大", "石头");
    const golem2 = new Golem("铁二", "钢铁");
    golem1.activate(); // 石大 启动!
    golem2.smash();    // 铁二 发动重击!
    
  • 特点:ES6 class 之前的“面向对象”标准做法。new 关键字是关键,它执行构造函数并创建新对象。prototype 用于添加共享方法,节省内存重点:可复用模板,批量创建相似对象,prototype实现共享。

4. 精准仿制与无中生有(Object.create()

  • 场景
    • 你想仿制一个现有的神器 (existingArtifact),让新物品继承它的所有能力(原型继承),然后再添加点自己的特色。
    • 或者,你想创造一个“绝对纯净”的虚空之物,不继承任何凡间(Object.prototype)的特性,比如 toString 之类的。
  • 咒语
    const magicAmulet = { boost: 5, type: 'defense' };
    const myAmulet = Object.create(magicAmulet); // 继承 magicAmulet 的能力
    myAmulet.owner = 

相关文章:

JavaScript 里创建对象

咱们来用有趣的方式探索一下 JavaScript 里创建对象的各种“魔法咒语”! 想象一下,你是一位魔法工匠,想要在你的代码世界里创造各种奇妙的“魔法物品”(也就是对象)。你有好几种不同的配方和工具: 1. 随手捏造(对象字面量 {}) 场景:你想快速做一个独一无二的小玩意儿…...

2025年计算机视觉与智能通信国际会议(ICCVIC 2025)

2025 International Conference on Computer Vision and Intelligent Communication 一、大会信息 会议简称:ICCVIC 2025 大会地点:中国杭州 收录检索:提交Ei Compendex,CPCI,CNKI,Google Scholar等 二、会议简介 2025年计算机视觉与智能通…...

手工收集统计信息

有时想对某些表收集统计信息 CREATE OR REPLACE PROCEDURE GATHER_STATS ASDECLAREV_SQL1 VARCHAR(1000);--表游标CURSOR C1 ISSELECT (SELECT USER) AS TABLE_OWNER,TABLE_NAMEFROM USER_TABLES; --可以在这里加过滤条件--索引游标CURSOR C2 ISSELECT TABLE_OWNER,INDEX_NAM…...

flume整合Kafka和spark-streaming核心编程

flume整合Kafka 需求1:利用flume监控某目录中新生成的文件,将监控到的变更数据发送给kafka,kafka将收到的数据打印到控制台: 1.查看topic 2.编辑flume-Kafka.conf,并启动flume 3.启动Kafka消费者 4.新增测试数据 5.查…...

tokenizer的用法

下面介绍下基于 Hugging Face Transformers 库中 tokenizer(分词器)的主要用法和常用方法,帮助你了解如何在各种场景下处理文本。这里以 AutoTokenizer 为例,但大多数模型对应的 tokenizer 用法大同小异。 ───────────…...

kotlin和MVVM的结合使用总结(二)

MVVM 架构详解 核心组件:ViewModel 和 LiveData 在 Android 中,MVVM 架构主要借助 ViewModel 和 LiveData 来实现。ViewModel 负责处理业务逻辑,而 LiveData 则用于实现数据的响应式更新。 ViewModel 的源码分析 ViewModel 的核心逻辑在 …...

Git 入门知识详解

文章目录 一、Git 是什么1、Git 简介2、Git 的诞生3、集中式 vs 分布式3.1 集中式版本控制系统3.2 分布式版本控制系统 二、GitHub 与 Git 安装1、GitHub2、Git 安装 一、Git 是什么 1、Git 简介 Git 是目前世界上最先进的分布式版本控制系统。版本控制系统能帮助我们更好地管…...

React.memo 和 useMemo

现象 React 中,通常父组件的某个state发生改变,会引起父组件的重新渲染(和其他state的重新计算),从而会导致子组件的重新渲染(和其他非相关属性的重新计算) 问题一:如何避免因为某个…...

EDI 如何与 ERP,CRM,WMS等系统集成

在数字化浪潮下,与制造供应链相关产业正加速向智能化供应链转型。传统人工处理订单、库存和物流的方式已难以满足下单客户对响应速度和数据准确性的严苛要求。EDI技术作为企业间数据交换的核心枢纽,其与ERP、CRM、WMS等业务系统的深度集成,成…...

面试踩过的坑

1、 “”和equals 的区别 “”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重…...

论文阅读:2024 ACL ArtPrompt: ASCII Art-based Jailbreak Attacks against Aligned LLMs

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Artprompt: Ascii art-based jailbreak attacks against aligned llms https://www.doubao.com/chat/3846685176618754 https://arxiv.org/pdf/2402.11753 https://github…...

多物理场耦合低温等离子体装置求解器PASSKEy2

文章目录 PASSKEy2简介PASSKEY2计算流程PASSKEy2 中求解的物理方程电路模型等离子体模型燃烧模型 PASSKEy2的使用 PASSKEy2简介 PASSKEy2 是在 PASSKEy1 的基础上重新编写的等离子体数值模拟程序。 相较于 PASSKEy1, PASSKEy2 在具备解决低温等离子体模拟问题的能力…...

视频噪点多,如何去除画面噪点?

你是否遇到过这样的困扰?辛辛苦苦拍摄的视频,导出后却满屏 “雪花”,夜景变 “噪点盛宴”,低光环境秒变 “马赛克现场”? 无论是日常拍摄的vlog、珍贵的家庭录像,还是专业制作的影视作品,噪点问…...

09前端项目----分页功能

分页功能 分页器的优点实现分页功能自定义分页器先实现静态分页器调试分页器动态数据/交互 Element UI组件 分页器的优点 电商平台同时展示的数据很多,所以采用分页功能实现分页功能 Element UI已经有封装好的组件,但是也要掌握原理,以及自定…...

第十二届蓝桥杯 2021 C/C++组 直线

目录 题目: 题目描述: 题目链接: 思路: 核心思路: 两点确定一条直线: 思路详解: 代码: 第一种方式代码详解: 第二种方式代码详解: 题目:…...

《Piper》皮克斯技术解析:RIS系统与云渲染如何创造奥斯卡级动画短片

本文由专业专栏作家 Mike Seymour 撰写,内容包含非常有价值的行业资讯。 译者注 《Piper》是皮克斯动画工作室的一部技术突破性的短片,讲述了一只小鸟在海滩上寻找食物并面对自然挑战的故事。它不仅凭借其精美的视觉效果和细腻的情感表达赢得了2017年奥…...

Java在excel中导出动态曲线图DEMO

1、环境 JDK8 POI 5.2.3 Springboot2.7 2、DEMO pom <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>commons…...

第19章:Multi-Agent多智能体系统介绍

第19章:Multi-Agent多智能体系统介绍 欢迎来到多智能体系统 (Multi-Agent System, MAS) 的世界!在之前的章节中,我们深入探讨了单个 AI Agent 的构建,特别是结合了记忆、上下文和规划能力的 MCP 框架。然而,现实世界中的许多复杂问题往往需要多个智能体协同工作才能有效解…...

Kotlin Multiplatform--02:项目结构进阶

Kotlin Multiplatform--02&#xff1a;项目结构进阶 引言正文 引言 在上一章中&#xff0c;我们对 Kotlin Multiplatform 项目有了基本的了解&#xff0c;已经可以进行开发了。但我们只是使用了系统默认的项目结构。本章介绍了如何进行更复杂的项目结构管理。 正文 在上一章中&…...

Spring Cloud Gateway配置双向SSL认证(完整指南)

本文将详细介绍如何为Spring Cloud Gateway配置双向SSL认证,包括证书生成、配置和使用。 目录结构 /my-gateway-project ├── /certs │ ├── ca.crt # 根证书 │ ├── ca.key # 根私钥 │ ├── gateway.crt # 网关证书 │ ├── …...

Windows同步技术-使用命名对象

在 Windows 系统下使用命名对象&#xff08;如互斥体、事件、信号量、文件映射等内核对象&#xff09;时&#xff0c;需注意以下关键要点&#xff1a; 命名规则 唯一性&#xff1a;名称需全局唯一&#xff0c;避免与其他应用或系统对象冲突&#xff0c;建议使用 GUID 或应用专…...

代码随想录算法训练营第五十八天 | 1.拓扑排序精讲 2.dijkstra(朴素版)精讲 卡码网117.网站构建 卡码网47.参加科学大会

1.拓扑排序精讲 题目链接&#xff1a;117. 软件构建 文章讲解&#xff1a;代码随想录 思路&#xff1a; 把有向无环图进行线性排序的算法都可以叫做拓扑排序。 实现拓扑排序的算法有两种&#xff1a;卡恩算法&#xff08;BFS&#xff09;和DFS&#xff0c;以下BFS的实现思…...

linux ptrace 图文详解(七) gdb、strace跟踪系统调用

目录 一、gdb/strace 跟踪程序系统调用 二、实现原理 三、代码实现 四、总结 &#xff08;代码&#xff1a;linux 6.3.1&#xff0c;架构&#xff1a;arm64&#xff09; One look is worth a thousand words. —— Tess Flanders 相关链接&#xff1a; linux ptrace 图…...

【前端】ES6 引入的异步编程解决方案Promise 详解

Promise 详解 1. 基本概念 定义&#xff1a;Promise 是 ES6 引入的异步编程解决方案&#xff0c;表示一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。核心作用&#xff1a;替代回调函数&#xff0c;解决“回调地狱”问题&#xff0c;提供更清晰的异步流程控…...

常见正则表达式整理与Java使用正则表达式的例子

一、常见正则表达式整理 1. 基础验证类 邮箱地址 ^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\\.[a-zA-Z]{2,}$ &#xff08;匹配如 userexample.com&#xff09;手机号 ^1[3-9]\\\\d{9}$ &#xff08;匹配国内11位手机号&#xff0c;如 13812345678&#xff09;中文字符 ^[\u4e00-\u9fa5…...

const(C++)

打印出来的结果是 a是12 *p是200 const修饰指针 const修饰引用...

python21-循环小作业

课程&#xff1a;B站大学 记录python学习&#xff0c;直到学会基本的爬虫&#xff0c;使用python搭建接口自动化测试就算学会了&#xff0c;在进阶webui自动化&#xff0c;app自动化 循环语句小作业 for-in作业斐波那契 for 固定数值计算素数字符统计数字序列range 函数 水仙花…...

小白电路设计-设计11-恒功率充电电路设计

介绍 作为电子信息工程的我&#xff0c;电路学习是一定要学习的&#xff0c;可惜目前作为EMC测试工程师&#xff0c;无法兼顾太多&#xff0c;索性不如直接将所学的知识进行运用&#xff0c;并且也可以作为契机&#xff0c;进行我本人的个人提升。祝大家与我一起进行提升。1.本…...

传感器模块有助于加速嵌入式视觉开发

传感器模块是一种小型成像解决方案,用于轻松将定制的视觉技术集成到机器和设备中,使其具备“视觉”功能。机器人、无人机、物联网、消费电子设备和监控应用的开发人员在设计中使用传感器模块,可以节省开发时间和资源。FRAMOS 推出了一个创新的可互换传感器模块和适配器生态系…...

Spring AI 快速入门:从环境搭建到核心组件集成

Spring AI 快速入门&#xff1a;从环境搭建到核心组件集成 一、前言&#xff1a;Java开发者的AI开发捷径 对于Java生态的开发者来说&#xff0c;将人工智能技术融入企业级应用往往面临技术栈割裂、依赖管理复杂、多模型适配困难等挑战。Spring AI的出现彻底改变了这一局面——…...