JavaScript对象字面量和构造函数详解

JavaScript对象创建与构造函数核心解析 在JavaScript编程中,对象创建与构造函数是实现面向对象编程的基础。通过构造函数模式,开发者可以高效创建多个相似对象实例,同时确保对象类型识别。其底层原理涉及原型链继承机制,当使用new操作符时,JS引擎会自动完成原型绑定和实例化过程。这种模式在工程实践中尤为重要,既能解决工厂模式无法识别对象类型的问题,又避免了直接使用对象字面量导致的内存浪费。在实际应用场景中,合理使用构造函数与原型方法可以优化性能,特别是在需要创建大量相似对象的业务场景(如电商购物车系统)中表现尤为突出。结合ES6的class语法 阅读详情
对象中只有两种属性:(一种比较细的分法)

​ 属性(数据属性)比如:名字,年龄,性别,出版社,地址等信息;
方法(封装代码的属性:函数 ,在这也是一种属性)。

在JS中对象的字面量和构造函数是非常的重点,其实在其他的语言中,是没有对象字面量的。

一.对象的字面量的语法:

​ {
属性名: 属性值,
属性名: 属性值,
方法名: 你们函数
}

这个大括号括起来的整个代码块就是叫做对象。

var p1 = {  }
①访问对象的属性:
  1. . 语法
        对象.属性
  2. [ ] 语法
    对象["属性名"]

    对象[变量]     通过外面var一个变量,这个变量类型是字符串,然后在[]中直接使用变量名。
②修改属性的值:(当这个属性名在对象字面量中是存在的,那就是修改其值)
②修改属性的值:(当这个属性名在对象字面量中是存在的,那就是修改其值)
③新增属性的值:(当这个属性名在对象字面量中是没有的,那就是新增其属性名和属性值)
修改和新增都是一下语法:
对象.属性名 = 值
④删除对象的属性:
 delete 对象.属性

二.使用构造函数来创建对象:

    function Person(name, sex){
        var a = 10;
        this.name = name;
        this.sex = sex;
        this.speak = function(){

                    }
        }

现在我们new一下:

var p1 = new Person ;

那么我们就叫p1是一个对象,一new出来就会在堆内存中分配一块内存空间。

那么p1的类型就是Person.

那么如果我们用 p1 instanceof Person 检测会返回true,那么 instanceof 就是测试对象类型。

在代码块中,var a = 10 ; 这个语句是一个变量,变量是放在 栈内存 ,但当他执行完一遍这个构造函数时,这个a就消失了,也就是说这个局部变量的生命周期是new出来到执行完构造函数最后一句的就消失了。

但是 里面的属性,name sex speak 这些属性上只要p1在他们就在。

那么现在我们再次体会一下局部变量a的生命周期和内存模型中的理解:

<script>
    function Person(name, sex) {
        var a = 10;
        this.name = name;
        this.sex = sex;
        this.outputa = function () {
            console.log(a);
        }
        this.speak = function () {

        }
    }

    var p1 = new Person();
    console.log(p1.a);
    p1.outputa();
</script>

结果是:

首先,var p1 = new Person();,new一下出来一个p1对象,计算机就会在堆内存(heap memory)中为P1选中一块内存。
然后,console.log(p1.a);,这句语句执行,这句可以这么理解①:你a在全局变量中并没有,只在构造函数中的局部变量中才有,在构造函数中的局部变量var a = 10;他会声明提前,但是他只是提前到函数的第一行执行。这也就可以说明局部变量,我们不能在外部使用。理解②就是函数作用域中的变量他是局部变量,在栈内存分配内存后,当函数执行到最后一行时,他就结束生命周期。

这个undefined是JS的一种安全机制,如果对象点一个没有生命的变量,那么就会默认成undefined,但如果是普通的变量,就会报错。报错信息是这个变量未被定义。

详见:JavaScript内存模型详解。

*注意:对象字面量的用法用 : 和 ,

​ 构造函数的用法用 = 和 ;

那么类型和对象之间的关系是什么呢?

也就是比如p1和Person的关系是什么呢?见下表:

类型对象
抽象具体
其他语言中类的作用
在JS中是构造函数的形式(构造函数=类)
命名用大坨法(首字母大写)
JS 通过对象字面量{}和构造函数new创建对象的区别 JS 通过对象字面量{}和构造函数new创建对象的区别通过对象字面量方式{}创建对象通过构造函数new创建对象{}和new创建对象的对比 通过对象字面量方式{}创建对象 可以直接在创建对象的时候添加属性和方法 let person = { name : 'ning', age : 19, say : function(){ return "hello wo... 阅读详情

相关推荐

js对象高级:07、详解5种对象创建模式(Object构造函数模式、对象字面量、工厂模式、自定义构造函数模式、构造函数+原型的组合模式)

本文介绍了JavaScript中五种创建对象的方式:1) Object构造函数模式,通过new Object()创建空对象后动态添加属性;2) 对象字面量模式,使用{}直接定义对象属性和方法;3) 工厂模式,通过工厂函数返回新对象;4) 自定义构造函数模式,使用new调用自定义构造函数;5) 构造函数+原型组合模式,将属性定义在构造函数中而方法添加到原型上。每种方式各有特点,适用于不同场景,其中组合模式既能区分对象类型又能节省内存,是最常用的对象创建方式。

狮子座的男孩 699

javascript——对象字面量、函数、枚举

对象字面量 使用对象字面量,可以在构建对象时,直接指定对象的属性; 语法:{属性名:属性值;属性名:属性值;…} 属性名与属性值是以键值对的方式存在的;属性名与属性值之间用:连接,属性之间用逗号隔开 var obj = { name: "张三", age: 28, //最后一个属性后面没有属性了,就不用加逗号了,不然报错很难找 sex: "男" }; console.log(obj); 对象字面量的属性名可以加引号也可以不加,

h_jQuery的博客 512

JavaScript中的对象和编程

在JavaScript中,对象是一种重要的数据类型,用于存储和组织相关的数据和功能。使用字面量表示法时,我们可以使用点表示法或方括号表示法来添加属性和方法。使用构造函数表示法时,我们定义一个构造函数,并使用。对象是一种复合数据类型,它用于存储和组织相关的数据和功能。这意味着每个对象都可以访问相同的方法,而不需要为每个对象创建一个新的方法副本。在JavaScript中,对象可以通过两种方式创建:字面量表示法和构造函数表示法。无论使用哪种方式,对象都可以用于封装数据和行为,使代码更加模块化和可重用。

ByteProwl的博客 71

JavaScript基础——第十一节:对象(创建对象的三种方式)和遍历对象

文章目录学习目标1. 对象1.1 对象是什么?1.2 为什么需要使用对象呢?2. 创建对象(object)的三种方式2.1 利用字面量创建对象2.2 使用对象练习:按要求写出对象变量、属性、函数,方法的区别利用new object创建对象2.3利用构造函数创建对象构造函数和对象3. new关键字4.遍历对象属性 学习目标 能够说出为什么需要对象 能够使用字面量创建对象 能够使用构造函数创建对象 能够说出new的执行过程 能够遍历对象 1. 对象 1.1 对象是什么? 现实生活中∶万物皆对象,对象是一个

123加油的博客 922

JavaScript 对象字面量与构造函数:构建高效对象的两种方式

Hi,我是布兰妮甜!对象字面量是创建单个实例的简洁之道,而构造函数则是批量生产对象的工厂。本文将深入探讨这两种创建对象的方法,帮助开发者根据具体需求选择最合适的方案,并详细介绍它们的工作原理、优势和局限性。

chaosweet的博客 1645

ESWA投稿全流程避坑指南:从LaTeX模板到审稿状态查询(附最新资源链接)

本文提供了一份详尽的ESWA期刊投稿全流程指南,涵盖从LaTeX模板深度适配、Cover Letter撰写,到Editorial Manager系统操作、审稿状态解析等关键环节。重点解析了投稿准备中的常见“雷区”与文件合规性要求,并分享了收到审稿意见后的高效修改与回复策略,旨在帮助研究者规避流程陷阱,提升投稿效率与成功率。

9o8p7i6u5y的博客 838

Javascript 对象字面量与构造函数

对象创建方式对象字面量:这是一种优美的对象创建方式,它以包装在大括号中的逗号分割的键-值(key-value)对的方式创建对象。 构造函数:主要包括内置构造函数(几乎总是有一个更好且更短的字面量表示法)和自定义构造函数。

YukyCookie的博客 1102

单点DToF激光测距传感器各家产品的比较

汇总DToF 单点测距传感器的相关信息

Linux 设备驱动概述及开发环境构建 (一) 1778

Javascript---字面量创建对象、组合构造函数+原型模式、动态原型模式

本文是有关于创建对象实例的一些常见方法,字面量模式,组合构造函数+原型模式,动态原型模式

wrx1995的博客 1303

专有钉钉小程序(浙政钉)开发搭建流程总览

最近公司有一个项目要做浙政钉,让我来负责做。靠,我一脸懵,开发了两年多不知道浙政钉是啥,感觉我眼界还是低了。然后就去百度、同事问了一圈才知道就是个钉钉小程序嘛,然后发布到浙政钉上了。就搭建项目跑起来我都肥了很多事,中间走了很多坑。正好领导让我写《钉钉小程序前端开发流程》,这想着也写个博客吧。下面就是整个流程及我所遇到的坑!

m0_53910290的博客 6358

Hermes Agent Windows安装教程:本地智能体离线部署实战

本地智能体(Local Agent)是一种运行在用户设备端、无需云端依赖即可响应自然语言指令并自动化执行任务的轻量级AI运行时框架。其核心原理基于配置驱动的任务监听与脚本调用机制,通过服务化驻留实现持续响应能力,技术价值在于保障数据隐私、规避API调用限制、适配内网及老旧系统环境。典型应用场景包括财务报表自动整理、科研仪器数据归档、IT资产变更通知等Windows桌面自动化需求。本文聚焦Hermes Agent这一主流开源实现,围绕Windows平台特有的服务注册、权限模型、杀软拦截、中文路径与YAML编码

weixin_34411563的博客 433

JS - 对象字面量、对象构造函数

使用花括号来定义对象,在括号内直接指定对象的属性和方法。属性和方法以键值对()的形式列出。首先需要定义一个函数,这个函数通常以开头(在函数内部,通过关键字来设置对象的属性和方法。然后使用关键字来创建对象实例。

labixiaoxinwm的博客 590

FastAPI + React:现代 Web 前后端分离开发的全栈实践指南

• 部署:CI/CD 双流水线,前端 push → GitHub Actions → Cloudflare Pages;• 后端:分层结构 routers → services → repositories → models,单测覆盖率 90 %。• 接口缓存:Redis + FastAPI Depends 实现接口级缓存,读 QPS 提升至 5 k。• 前端:BFF 由 React Query 代理,统一缓存、重试、分页。GET /items/{id} 详情。,前端同学无需等 Mock 即可联调。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 1495

JavaScript:对象是如何创建的三种方法告诉你 (字面量、new object、构造函数创建的三种方式)(详解)

文章目录一、对象是什么?二、创建对象的三种方法①利用字面量创建对象②利用new Object创建对象③利用构造函数创建对象三、变量、属性、函数、方法的总结四、new关键字执行流程五、遍历对象属性六、总结七、练习 一、对象是什么? 现实生活中:万物皆对象,对象是一个具体的事物,看得见摸得着的实物。例如,一本书、一辆汽车、一个人 可以是“对象”,一个数据库、一张网页、一个与远程服务器的连接也可以是“对象”。 在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、

Argonaut_的博客 1993

最新2026年《网络数据安全风险评估办法》条款解读

大型企业集团IT变革下的零信任安全体系建设方案(55页).pptx。以数据安全为核心的安全立体防御体系解决方案(41页).pptx。让数据安全合规地创造价值(15页 PPT).pptx。大型集团数据安全应急预案(57页).docx。数据安全治理与评估服务业务介绍.pptx。数据安全管理实践(17页).pptx。大数据安全架构设计方案.pptx。大数据安全规划总体方案.pptx。数据库安全综合治理方案.pptx。医疗数据安全建设方案.pptx。数据安全框架规划图.pptx。数据安全治理方案.pptx。

cdfunlove的博客 50

微搭低代码实现用户登录及注册功能

在小程序开发中,我们可以拿到微信用户的openid,openid可以作为用户的唯一标识,在查询数据的时候可以进行数据过滤实现查询自己提交的数据。那微搭中是否也有openid这个概念,可以获取用户自己提交的数据呢? 答案是肯定的,那要怎么去做呢?思路是先创建一个数据源方法,在数据源中返回openid,然后低代码中可以调用数据源的方法并且赋值给全局变量,这样在后续的业务中从全局变量就可以获取openid了,方便做数据权限的控制。 为了实现这个目的,我们从创建数据源开始。 创建数据源 我们先创建一个用户管理的数据

低代码布道师的博客 3000

[JavaScript]js创建对象的方式

一、new 操作符 + Object 创建对象 //new操作符+Object创建对象 var person = new Object(); person.name = "Jayee"; person.age = 21; person.say = function () { console.log(this.name); } 二、字面式创建对象 //字面量创建对象 var person

DaftJayee的博客 201

“软开关”硬技术!ZVS和ZCS到底谁更牛?看完这个例子你就懂了!

❌ ZVS 和 ZCS 是万能的?→ 不,它们都有实现条件,谐振参数选不好照样硬拐弯!❌ 只要有谐振就一定ZVS?→ 不,一定要设计合适的死区时间和负载条件才行!ZVS 是让电压先“冷静”,ZCS 是让电流先“退场”。一个是开门不撞墙,一个是关门不甩门。懂了它们,功率设计就是在跳华尔兹而不是打架!💃🔌。

weixin_43199439的博客 1243

前端学习<四>JavaScript基础——28-对象的创建&构造函数

对象的字面量就是一个{}。里面的属性和方法均是键值对键:相当于属性名。值:相当于属性值,可以是任意类型的值(数字类型、字符串类型、布尔类型,函数类型等)。使用对象字面量来创建一个对象,非常简洁,举例如下::使用对象字面量,可以在创建对象时,直接指定对象中的属性。语法:{属性名:属性值,属性名:属性值....}例 1:(一个简单的对象)name: '千古壹号',age: 28例 2:(一个较复杂的对象)name: "千古壹号",age: 26,// 还可以存放一个嵌套的对象。

——心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,谦虚,自律,反思,成长,还算是比较正能量的博主,公益免费传播……内心特别想在AI界做出一些可以推进历史进程影响力的东西(兴趣使然,有点小情怀,也有点使命感呀)… 956

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JavaScript-6-对象

对象概念创建方法对象字面量创建对象{}new Object创建对象构造函数创建对象变量和属性函数和方法构造函数和对象new 关键字执行过程遍历对象内置对象含义使用Math对象日期对象数组对象字符串对象 概念 含义:在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象 属性:事物的特征,在对象中用属性表示 方法:事物的行为,在对象中用方法表示 自定义对象、内置对象属于ECMAScript;浏览器对象属于JS独有 创建方法 对象字面量创建对象{} 属性或方法采取键值对的形式,多

qq_43128157的博客 575

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

js如何对象定义

方法一:通过var object={} 对象字面量(1),可以叫对象直接量来自定义一个对象。对象自面量是一个表达式,这个表达式的每次运算都创建并初始化一个新对象。//用字面量定义一个对象,是以名值对的方式来保存的alert(user.y) //调用属性user.pp() //调用方法(2) var student = { //还可以换行写,每义定一个属性名和值,用逗号分开,最后一个不加逗号,加了会被忽略,但在ie中会报错,最好不要加。

hdxx2022的博客 1832

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JavaScript对象

一、对象定义 对象由属性和方法组成,包括创建对象和内置对象 二、创建对象 包括三种方式:利用字面量创建、利用new Object创建、构造函数创建对象 (一)利用字面量创建 步骤:(1)创建对象 var obj={ } 注意点:属性名后面用冒号,各属性之间用逗号隔开 (2)调用对象 调用属性:方法1:console.log(obj.属性名) 方法2:console.log(obj['属性名']) 调用方法: ...

webshady的博客 1036

JavaScript基础之对象

在 JavaScript 中,现阶段我们可以采用三种方式创建对象(object):利用创建对象利用new Object创建对象利用创建对象。

2401_84438067的博客 333

javascript--对象创建--几种方式--构造函数--混合模式

在javascript中,一切都是对象。如何更清晰的构建对象,是用好js的关键点。

插件开发 484

大白话JavaScript如何创建一个对象?对象字面量和构造函数创建对象有什么区别?

来创建一个对象,在花括号里面可以直接定义对象的属性和方法。是 JavaScript 中的一个关键字,它是一个特殊的对象引用,在代码运行时会根据函数的调用方式动态地指向不同的对象。是一个非常重要且有些复杂的概念,它就像一个灵活的“指针”,在不同的场景下会指向不同的对象。的主要作用是让函数可以灵活地访问和操作不同的对象,提高代码的复用性和灵活性。关键字就是启动这个加工厂的按钮,当按下按钮后,加工厂会生产出一个新的对象,而。,函数可以根据调用它的对象来动态地获取和修改对象的属性和方法。

前端大白话 1220

JavaScript 对象字面量(object literal)

什么是字面量 用来为变量赋值时的常数量 对象字面量 对象字面值是封闭在花括号对({})中的一个对象的零个或多个”属性名:值”列表。 var person={ name:“Jack”, age:10, 5:true }; 1 2 3 4 5 在这个例子中,左边的花括号({)表示对象字面量的开始,因为它出现在了表达式上下文(expression context)中。 JavaScript 中的表达式上...

极客神殿 3920
上一篇: JavaScript六种比较常见的原型创建对象的方法
下一篇: JS内存模型
风或许自媒体
博客等级 码龄12年 76粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值