javaScript的构造函数和java的构造函数区别

news/2025/10/5 0:06:14/文章来源:https://www.cnblogs.com/BKYNEKO/p/19126076

核心思想差异:

  • Java的构造函数:基于严格的“类”(Class),像一个工业模具。一旦设计好,就按照这个模具精确地生产出一模一样的产品。

  • JavaScript的构造函数:基于灵活的“原型”(Prototype),更像一个手工作坊。有一个核心的师傅(构造函数),还有一个所有产品都能使用的公共“工具墙”(原型)。


 

1. Java:工业模具 (class)

在Java中,你必须先定义一个 class。这个 class 是一个非常严格和完整的蓝图,它详细规定了对象应该有哪些属性(字段)和行为(方法)。**构造函数(Constructor)**只是这个蓝图中的一个特殊部分,它的唯一职责是在用模具生产出产品时,进行“初始化填充”。

【示例】

// 1. 定义一个精确的工业模具:Person Class
public class Person {// 模具规定了产品必须有一个 name 属性public String name;// 构造函数:模具的“注料口”,负责在创建时将初始材料("Alice")注入public Person(String initialName) {this.name = initialName;}// 模具规定了产品必须有一个 sayHello 的行为public void sayHello() {System.out.println("Hello, I am " + this.name);}
}// 2. 使用模具进行生产
// new Person("Alice") 就是用 Person 模具生产一个实例,并通过构造函数注入"Alice"
Person alice = new Person("Alice"); 
alice.sayHello(); // 输出: Hello, I am Alice

总结 (Java):

  • new 的是 class(模具)。

  • 构造函数是 class 的一部分,负责初始化

  • 产出的是一个严格按照 class 蓝图定义的对象实例。


 

2. JavaScript:手工作坊 (function + prototype)

在JavaScript(经典原型模式下),没有 class 这个刚性模具。你只有一个**“师傅”(构造函数)和一个“公共工具墙”(原型 prototype)**。

  • 构造函数 function Person(name){...}:这是**“师傅”本人**。他的任务是承接一个订单,拿到一个空的毛坯房(新对象),然后做一些个性化的装修(比如在墙上刻上名字 this.name = name)。

  • 原型 Person.prototype:这是作坊里的**“公共工具墙”**。上面挂着所有产品都能使用的工具(比如 sayHello 这个方法)。把工具挂在这里的好处是,不用给每个产品都单独配一套工具,节省了材料(内存)。

【示例】

// 1. 定义“师傅”的工作内容 (构造函数)
function Person(name) {// 师傅接到新对象后,进行个性化装修:刻上名字this.name = name; 
}// 2. 在“公共工具墙”上挂一个新工具并命名为 sayHello (在原型上定义方法)(最后有解释)
Person.prototype.sayHello = function() {console.log(`你好!我是 ${this.name}。`);
};// 3. 让师傅开始工作,生产一个新产品
// new Person("Alice") 就是让 Person 师傅创建一个新产品,并刻上名字"Alice"
const alice = new Person("Alice");// 4. 使用产品
// 当调用 alice.sayHello() 时,alice 自己身上没有这个工具,
// 于是它会回到师傅的“公共工具墙”(Person.prototype)上找到并使用这个工具。
alice.sayHello(); // 输出: 你好!我是 Alice。

总结 (JavaScript):

  • new 的是一个普通函数,但 new 这个动作赋予了它“构造”的能力。

  • 构造函数负责处理每个实例独有的属性。

  • prototype 负责存放所有实例共享的方法。

  • 产出的是一个对象,这个对象通过一条看不见的线(原型链)连接着那个“公共工具墙”。


 

new 关键字到底做了什么?一张图看懂区别

 

  在 Java 中 (new Person(...)) 在 JavaScript 中 (new Person(...))
第一步 寻找 Person 类的定义(找模具) 创建一个通用的、空的对象 {}
第二步 Person 对象分配内存 将空对象的__proto__指向Person.prototype(连接到工具墙)
第三步 调用 Person 构造方法初始化对象 调用Person函数,this指向新对象(让师傅装修)
第四步 返回初始化完毕的对象引用 返回装修好的新对象

 

核心差异

Java 是预先规划、静态定义的。你必须先设计好完整的 class 模具,才能生产。

JavaScript 是动态、灵活的。你有一个负责个性化加工的函数,和一个可以随时增删工具的公共原型。这种“组合”的方式来定义一类对象。虽然现在ES6引入了 class 语法,但其底层原理依然是基于原型的这套“作坊模式”。

 

 

Person.prototype.sayHello = function() { console.log(`你好!我是 ${this.name}。`); };

把它看作一个句子来解读:

  • Person: 这是我们自定义的构造函数。在JavaScript中,函数本身也是一个对象。既然是对象,它就可以拥有自己的属性。

  • . (点): 这是对象属性的访问符。我们准备访问 Person 对象上的一个属性。

  • prototype: 这就是最关键的部分。prototype (原型) 是每一个函数对象天生就有的一个属性。你不需要自己创建它,只要你定义一个函数,JavaScript就会自动为这个函数配上一个 .prototype 属性。

    • 这个 .prototype 属性的值,本身也是一个对象。默认情况下,它是一个近乎空的对象。

    • 可以把 Person 函数想象成一个“作坊”的品牌名,那么 Person.prototype 就是这个作坊里那面真实存在的“公共工具墙”

  • .sayHello: 这是我们正在Person.prototype 这个“工具墙”对象添加一个新属性,属性名由我们自定义为 sayHello。这就像在工具墙上钻一个孔,准备挂工具。

  • = function() { ... }: 这是我们赋给 sayHello 属性的。因为这个值是一个函数,所以 sayHello 就成了一个方法。这就像把一个真正能用的“打招呼”工具挂在了墙上。

所以,整行代码的真正含义是:

“找到 Person 这个函数对象,访问它自带的那个名叫 prototype 的属性(它是一个对象),然后给这个 prototype 对象新增一个名叫 sayHello 的属性,并让这个属性的值等于我们定义的这个新函数。”

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

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

相关文章

黄冈网站推广软件费用是多少8090设计网站

题目: 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: ca…

天一生水 地六成之

天一生水 地六成之

一次幸运的ORA-07445 kdxlin故障恢复---惜分飞

一次幸运的ORA-07445 kdxlin故障恢复---惜分飞联系:手机/微信(+86 17813235971) QQ(107644445) 标题:一次幸运的ORA-07445 kdxlin故障恢复 作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步…

类似于众人帮的做任务赚佣金网站网络建站平台

前几天写了一片关于RecyclerView滑动删除Item,RecyclerView长按拖拽Item的博客,本来很简单一个使用,阅读量还挺高的,原博客传送门。今天介绍一个RecyclerView Item侧滑菜单,RecyclerView滑动删除Item,Recyc…

昔阳网站建设电子商务网站建设规划书实例

大家好,才是真的好。 目前将Domino仅仅作为邮件服务器的企业用户还不少。如果Domino服务器版本比较新(例如版本为11.0.x、12.0.x等),外发邮件时,没有通过邮件网关中转邮件,而是直接发送到Internet互联网上…

根号分治简单解说

Sparkle我是挖坑大蛇(逃 口胡了一下午的根号分治,一定会写的。

企业展示网站模板wordpress做微信推广

法律数字化与AI大模型的结合,正在逐步改变法律行业的传统运作方式,为法律从业者提供更加高效、精准的服务,同时也为公众提供了更加便捷的法律咨询和解决方案。 蚓链AI大模型在法律数字化过程中起到了关键作用。AI模型通过自然语言处理、机器…

Postgres数据库truncate表无有效备份恢复---惜分飞

Postgres数据库truncate表无有效备份恢复---惜分飞联系:手机/微信(+86 17813235971) QQ(107644445) 标题:Postgres数据库truncate表无有效备份恢复 作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则…

河北手机网站制作公司国内做网站需要做icp备案吗

本篇简介在上一篇我们介绍了SpringCloud中的注册中心组件Eureka。Eureka的作用是做服务注册与发现的,目的是让不同的服务与服务之间都可以通过注册中心进行间接关联,并且可以通过注册中心有效的管理不同服务与服务的运行状态。但在微服务的架构中&#x…

P14041 [PAIO 2025] Towers

更好的阅读体验 题意 实现一个函数,求在一个 \(N \times M\) 的矩阵中放置最少炮塔数的方案,使得每个 \(K \times K\) 的正方形区域内至少有一个炮塔。 思路 观察样例可以发现,在最优情况下 每行每隔 \(K-1\) 格就有…

智能优化网站泰安飞讯网络有限公司

centos安装mysql8数据库,下载的是rpm-bundle.tar包,这样可以在内网环境离线安装,工作中医院的服务器很多也是内网的,所以这里记录下rpm-bundle.tar包安装的步骤。 lscpu 查看处理器是x86还是arm 下载对应的版本 bundle tar包 ((mysql-8.2.0-1.el7.x86_64.rpm-bundle.tar))…

提供手机网站开发重庆高端网站seo

来源:通信产业报 概要:从人类进入信息时代以来,经济社会发展对信息互联互通的需求不断提升,通信的范围和边界已从人与人逐渐拓展到物与物以及人与物之间。 从人类进入信息时代以来,经济社会发展对信息互联互通的需求不…

哪些网站用python做的网页是怎么制作的

本博客为个人学习笔记,学习网站:黑马程序员SpringCloud 2021教程 目录 DSL语法 索引库操作 mapping属性 创建索引库 字段拷贝 查询、删除、修改索引库 文档操作 新增文档 查询、删除文档 修改文档 全量修改 增量修改 DSL文档语法小结 Rest…

不用登录的小游戏网站有哪些可以做翻译的网站

【CTSC2017】游戏 problem UOJ299 solution 定义 Xi:X_i:Xi​: 当前已知条件第 iii 局的状态 1/01/01/0(胜/败)。 将 XiCiX_iC_iXi​Ci​ 记为事件 AiA_iAi​。 假设现在已知条件共有 sss 个,即:第 k1∼sk_{1\sim s}k1∼s​…

03-spirngIOC02-通过注解实现IOC

03-spirngIOC02-通过注解实现IOC$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");通过注解实现IOC实现实体类 package com.zhongge.entity;import jakarta.an…

网站怎么在移动端推广桂林必去五个景点

ON1 Photo RAW 2024 for Mac是一款集专业性与易用性于一体的照片编辑软件。它拥有简洁直观的用户界面,即便对于摄影新手,也能快速上手。软件支持RAW格式照片处理,能够完整保留照片原始信息,让后期调整更加灵活。 在功能方面&#…

网站的运营成本最新人才招聘网

1.0osi七层模型 应用层 data 表示层 会话层 传输层 数据段 防火墙,端口(TCP UDP) 网络层 数据包 路由器 数据链路层 数据帧 交换机 物理层 比特流 网卡 2.IP地址分类 私有地址 A类 0--127 10.0.0.0…

服务之家网站推广公司网站开发属于技术合同

来源:生物通近年来,有一些证据表明,饮食干预有助于减缓肿瘤的生长。麻省理工学院的一项新研究分析了小鼠的两种不同饮食,揭示了这些饮食是如何影响癌细胞的,并为为什么限制卡路里可以减缓肿瘤生长提供了解释。该研究检…

美食网站 怎么做wordpress客户端制作

引言 作为数据传输界鼎鼎大名的扛把子,XML被应用于各个方面,但随着弱结构化标记语言如JSON、YAML等的出现,人们慢慢的脱离了XML的统治,但在互联网早期的发展当中XML是不可或缺的一部分,比如各种微信开发中的数据传输&…

哈希简单解说

Sky Clearing Up这个哈希确实是啊。 这里不说各种冲突什么东西的证明,因为作者不会,看不懂。 你说说是谁把钢琴和弦乐放一块去的,我怎么飞起来了。 哈希 下面的定义都是不严谨的,这里仅是我的通俗解释。 哈希的基本…