JavaScript 构造函数详细解析
📅 2026/7/30 18:28:22
👁️ 次浏览
本文详细介绍JavaScript构造函数。本文目录1. 基本构造函数2. 构造函数的工作原理3. 原型与构造函数4. 实例属性 vs 原型属性5. 构造函数的继承6. 构造函数与类的关系7. 静态方法与属性8. 构造函数的问题与优化构造函数 vs 工厂函数1. 基本构造函数通过new关键字调用的函数即为构造函数// 构造函数functionPerson(name,age){// 实例属性this.namename;this.ageage;// 实例方法this.greetfunction(){returnHello, my name is${this.name};};}// 创建实例constalicenewPerson(name1,30);console.log(alice.greet());// Hello, my name is name12. 构造函数的工作原理当使用new调用构造函数时会发生以下步骤创建一个新对象新对象的原型[[Prototype]]被设置为构造函数的prototype属性构造函数的this指向新对象执行构造函数内的代码如果构造函数返回一个对象则返回该对象否则返回新创建的对象// 手动模拟 new 操作符functionmyNew(constructor,...args){constobjObject.create(constructor.prototype);constresultconstructor.apply(obj,args);returntypeofresultobjectresult!null?result:obj;}constbobmyNew(Person,Bob,25);3. 原型与构造函数构造函数的prototype属性是一个对象所有实例都会继承该对象的属性和方法functionAnimal(name){this.namename;}// 原型方法所有实例共享同一个方法Animal.prototype.speakfunction(){console.log(${this.name}makes a sound.);};constdognewAnimal(Buddy);dog.speak();// Buddy makes a sound.// 检查原型关系console.log(doginstanceofAnimal);// trueconsole.log(Object.getPrototypeOf(dog)Animal.prototype);// true4. 实例属性 vs 原型属性functionCar(make){// 实例属性每个实例独有this.makemake;this.wheels4;}// 原型属性所有实例共享Car.prototype.startfunction(){console.log(${this.make}started.);};consttoyotanewCar(Toyota);constfordnewCar(Ford);console.log(toyota.hasOwnProperty(make));// trueconsole.log(toyota.hasOwnProperty(start));// false (继承自原型)5. 构造函数的继承通过构造函数实现继承的几种方式// 父类构造函数functionAnimal(name){this.namename;}Animal.prototype.speakfunction(){console.log(${this.name}makes a sound.);};// 子类构造函数使用组合继承functionDog(name,breed){// 继承实例属性Animal.call(this,name);this.breedbreed;}// 继承原型方法Dog.prototypeObject.create(Animal.prototype);Dog.prototype.constructorDog;// 子类特有方法Dog.prototype.barkfunction(){console.log(${this.name}barks!);};constlabradornewDog(Buddy,Labrador);labrador.speak();// Buddy makes a sound.labrador.bark();// Buddy barks!6. 构造函数与类的关系ES6 的class是构造函数的语法糖// ES6 类classPerson{constructor(name,age){this.namename;this.ageage;}greet(){// 自动添加到原型returnHello,${this.name};}}// 等价于传统构造函数functionPerson(name,age){this.namename;this.ageage;}Person.prototype.greetfunction(){returnHello,${this.name};};7. 静态方法与属性属于构造函数本身而非实例的方法和属性functionCalculator(){// 实例属性this.value0;}// 静态方法Calculator.addfunction(a,b){returnab;};// 静态属性Calculator.version1.0;// 使用静态方法console.log(Calculator.add(3,5));// 8// 实例无法访问静态成员constcalcnewCalculator();// calc.add(3, 5); // 报错8. 构造函数的问题与优化方法重复创建每个实例都有一份方法的副本浪费内存。// 不推荐在构造函数内定义方法functionBadExample(){this.methodfunction(){/* ... */};// 每个实例都会创建新函数}// 推荐使用原型定义方法functionGoodExample(){/* ... */}GoodExample.prototype.methodfunction(){/* ... */};// 所有实例共享同一个函数忘记使用new关键字导致this指向全局对象非严格模式或undefined严格模式。// 安全的构造函数模式functionSafeConstructor(){if(!(thisinstanceofSafeConstructor)){returnnewSafeConstructor();}// 初始化代码}// 或使用 ES6 类强制使用 newclassSafeClass{constructor(){/* ... */}}构造函数 vs 工厂函数特性构造函数工厂函数调用方式通过new关键字调用像普通函数一样调用返回值自动返回新对象除非手动返回其他对象必须显式返回一个对象原型链实例的原型指向构造函数的prototype实例的原型取决于返回的对象使用场景创建具有继承关系的对象创建简单对象或需要复杂初始化的对象// 工厂函数functioncreatePerson(name,age){return{name,age,greet(){returnHello,${this.name};}};}constpersoncreatePerson(Charlie,35);← 上一篇 AngularJS知识快速入门上记得点赞、关注、收藏哦下一篇 Ajax——在OA系统提升性能的局部刷新 →
更多请点击:
https://intelliparadigm.com
第一章:《人工智能导论》第4版核心命题体系总览 《人工智能导论》第4版以“智能的本质、实现的路径与演化的边界”为思想主线,重构了传统知识框架,将符号主义、连接主义与行为主义三大范…
📅 2026/7/30 18:28:22
Docker实战 | 使用Docker部署EasyNode服务器面板工具一、EasyNode介绍1.1 EasyNode简介1.2 EasyNode主要特点二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、拉取EasyNode镜像五、…
📅 2026/7/30 18:28:22
最近好多朋友在后台问我,说看到文献里或者实验报告里出现GeO4离子,心里直打鼓。这玩意儿到底是啥?是不是那种特别玄乎的高级材料?其实吧,真没你想的那么复杂,也没那么神秘。今天我就掰开揉碎了跟你们聊聊这个GeO4离子,咱们不整那些虚头巴脑的理论堆砌,就讲点实在的,让…
📅 2026/7/30 18:28:00
更多请点击:
https://kaifayun.com
第一章:AI 成本结构分析 AI 系统的总体成本远不止模型训练时的 GPU 租用费用,而是由多个相互耦合的维度共同构成。理解这些成本要素,是优化 AI 架构、制定可持续部署策略的前提。
核心成本构成…
📅 2026/7/30 19:34:19
1. 为什么我们需要超越简单问答的AI提示技巧?在过去的两年里,我亲眼见证了AI编程助手从简单的代码补全工具进化到能够理解复杂需求的智能伙伴。但很多开发者仍然停留在"问一句答一句"的基础交互模式,这就像只用了智能手机的通话功能…
📅 2026/7/30 19:34:19
高性能容器化Android系统架构揭秘:Waydroid实现原理深度解析 【免费下载链接】waydroid Waydroid uses a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/wa/way…
📅 2026/7/30 19:34:19
Go容器化部署优化:Go Practical Tips中的GOMAXPROCS调整与性能调优 【免费下载链接】go-practical-tips Go Practical Tips 项目地址: https://gitcode.com/gh_mirrors/go/go-practical-tips
在Go应用的容器化部署中,合理调整GOMAXPROCS参数是提升…
📅 2026/7/30 19:34:19
深度解析YimMenu:模块化安全防护架构与Lua扩展开发实战指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi…
📅 2026/7/30 19:34:19
免费Android离线中文TTS引擎:Chinese TTS TF Lite完整使用指南 【免费下载链接】ChineseTtsTflite Android Chinese TTS Engine Base On Tensorflow TTS , use for TfLite Models Test。安卓离线中文TTS引擎,在TensorflowTTS基础上开发,用于T…
📅 2026/7/30 19:33:19
本文关键词:geo2是共价化合物哎,说实话,每次看到化学题里那些弯弯绕绕的电子式,我就头大。特别是遇到那种非要让你判断是离子还是共价的,心里就发毛。今天咱不整那些虚头巴脑的定义,就聊聊二氧化硅,也就是大家常说的硅石、石英,很多人会误写成geo2,虽然化学式不对,但…
📅 2026/7/30 0:00:24
B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…
📅 2026/7/30 0:00:26
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer
您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…
📅 2026/7/30 0:00:26
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/30 1:16:07
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/30 1:16:07
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/30 1:16:07
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/30 7:16:27
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/30 17:17:14
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/30 5:16:22