北京企业建站程序/seowhy培训
编程笔记 html5&css&js 073 JavaScript Object数据类型
- 一、创建 Object
- 二、Object 类型的属性与方法
- 三、示例
- 四、参考
- 小结
JavaScript 中的
Object
数据类型是该语言中最复杂也最灵活的数据类型之一,它是其他所有内置对象和用户自定义对象的基础。在 JavaScript 中,几乎任何东西都可以视为对象,包括函数、数组甚至是基本数据类型(通过包装对象)。
一、创建 Object
-
使用构造函数创建:
// 使用 new 关键字调用 Object 构造函数创建一个空对象 let obj1 = new Object(); // 或者带初始属性 let obj2 = new Object({ name: 'Alice', age: 30 });// 等同于 let obj3 = {}; // 带初始属性 let obj4 = { name: 'Bob', age: 35 };
-
使用对象字面量创建:
这是最常见也是最简洁的创建对象的方式,直接用花括号包裹属性名与对应的值。let person = {firstName: 'John',lastName: 'Doe',address: {street: '123 Main St.',city: 'Anytown',country: 'USA'},getFullName: function() {return this.firstName + ' ' + this.lastName;} };console.log(person.getFullName()); // 输出 "John Doe"
二、Object 类型的属性与方法
-
constructor:每个对象实例都有一个 constructor 属性,它指向用于创建该对象的函数引用。
console.log(person.constructor); // 输出:ƒ Object() { [native code] }
-
hasOwnProperty(propertyName):用于检查对象自身(不包括原型链)是否具有指定名称的属性。
console.log(person.hasOwnProperty('firstName')); // 输出:true
-
isPrototypeOf(object):这个方法不是在对象实例上调用,而是在构造函数或任何父级对象上调用,以检查传入的对象是否是其原型链的一部分。
function Person(name) {this.name = name; }let john = new Person('John'); console.log(Person.prototype.isPrototypeOf(john)); // 输出:true
-
propertyIsEnumerable(propertyName):检查给定的属性是否可枚举。
console.log(person.propertyIsEnumerable('firstName')); // 输出:true
-
toLocaleString():返回对象的字符串表示形式,通常依据本地化环境来格式化。
let dateObj = new Date(); console.log(dateObj.toLocaleString()); // 输出当前日期时间的本地化格式
此外,Object 类型还提供了诸如 toString()
、valueOf()
、getOwnPropertyDescriptor()
、getPrototypeOf()
、keys()
、values()
和 entries()
等方法,以及 ECMAScript 6 引入的 Object.assign()
、Object.create()
、Object.defineProperties()
、Object.defineProperty()
等更高级的方法,用于操作对象属性和原型链。
三、示例
let myObject = {a: 1,b: 'two',c: true,method: function() {console.log('Method called on the object!');}
};// 添加动态属性
myObject.d = [1, 2, 3];// 检查属性存在性
console.log(myObject.hasOwnProperty('a')); // 输出:true
console.log(myObject.propertyIsEnumerable('b')); // 输出:true// 调用对象上的方法
myObject.method(); // 在控制台输出 'Method called on the object!'// 获取对象的所有可枚举属性名
console.log(Object.keys(myObject)); // 输出:[ 'a', 'b', 'c', 'method', 'd' ]
四、参考
JavaScript 中的 Object
类型和 C++ 语言中的 object
(或类)在概念和实现上有很大的不同,主要区别如下:
-
定义与本质:
- JavaScript:在 JavaScript 中,
Object
是所有对象的基础类型。每个非原始值都是一个 Object 或是其原型链上的某个对象的实例。这意味着数组、函数、日期等都继承自Object
原型。在 JavaScript 中,你创建的任何自定义对象也是基于Object
构造函数的。 - C++:C++ 是一种静态类型语言,它有类(class)的概念,类是对一组具有相同特征和行为的对象的抽象描述。当你定义一个类时,可以声明成员变量(属性)和成员函数(方法)。C++ 中没有内置的
object
类,但所有的类实例都可以看作是对象。
- JavaScript:在 JavaScript 中,
-
动态性与静态性:
- JavaScript:JavaScript 对象是动态的,可以在运行时添加或删除属性,并且支持原型继承(基于原型链的继承机制)。
- C++:C++ 的对象结构在编译时就已经确定,属性和方法必须在类定义时指定,不能像 JavaScript 那样动态地增加或删除成员。C++ 使用的是类继承机制,子类在编译时就必须明确其父类。
-
内存管理:
- JavaScript:JavaScript 引擎自动管理对象的生命周期,通过垃圾回收机制来释放不再使用的对象所占用的内存。
- C++:C++ 不提供自动垃圾回收机制,程序员需要手动管理对象的内存分配与释放,可以通过构造函数/析构函数、new/delete运算符或者智能指针等方式进行内存管理。
-
类型系统:
- JavaScript:JavaScript 是弱类型语言,对象的类型检查较为灵活,变量可以动态改变类型,typeof操作符返回“object”表示非原始类型的值,包括自定义对象和内置对象实例。
- C++:C++ 是强类型语言,每个对象都有固定的类型,类型转换需要显式进行,编译器会在编译阶段执行严格的类型检查。
-
实例化方式:
- JavaScript:使用字面量语法或
new
关键字调用构造函数来创建对象实例。 - C++:使用
new
关键字结合类名来创建对象实例,也可以通过栈上直接定义(对于局部小对象)或在堆上动态分配。
- JavaScript:使用字面量语法或
-
面向对象特性:
- JavaScript:尽管不是纯面向对象语言,但提供了封装(通过闭包)、继承(通过原型链或ES6的class关键字)和多态(通过原型委托和函数重载)等功能。
- C++:全面支持面向对象编程的所有基本特性,包括封装(通过访问修饰符public, private, protected)、继承(通过class派生)、多态(通过虚函数和抽象类)等。同时C++还支持运算符重载等其他面向对象语言不一定具有的特性。
小结
数据类型的概念与定义在不同语言中的区别较大,如果以后学习其他编程语言时注意区分。
相关文章:

编程笔记 html5cssjs 073 JavaScript Object数据类型
编程笔记 html5&css&js 073 JavaScript Object数据类型 一、创建 Object二、Object 类型的属性与方法三、示例四、参考小结 JavaScript 中的 Object 数据类型是该语言中最复杂也最灵活的数据类型之一,它是其他所有内置对象和用户自定义对象的基础。在 JavaS…...

【Linux】基于管道进行进程间通信
进程间通信 一、初识进程间通信1. 进程间通信概念2. 进程间通信分类 二、管道1. 管道概念2. 管道原理3. 匿名管道4. 匿名管道系统接口5. 管道的特性和情况6. 匿名管道的应用(1)命令行(2)进程池 7. 命名管道(1ÿ…...

Vue中间件的讲解案例分析
Vue中间件的讲解案例分析 1. Axios中间件: Axios是一个常用的HTTP客户端,可以与Vue结合使用,处理网络请求和数据获取。您可以创建一个Axios实例,并将其作为Vue的原型属性或插件使用,以便在整个应用程序中共享和使用。…...

【C生万物】C语言分支和循环语句
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有…...

Vue代理模式和Nginx反向代理(Vue代理部署不生效)
在使用axios时,经常会遇到跨域问题。为了解决跨域问题,可以在 vue.config.js 文件中配置代理: const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServer: {port: 7070,prox…...

C语言中的作用域与生命周期
作用域(scope)是程设计概念,通常来说,一段程序代码中所⽤到的名字并不总是有效的,而限定这个名字的可⽤性的代码范围就是这个名字的作用域。 局部变量的作用域是变量所在的局部范围。全局变量的作用域是整个工程&…...

MATLAB计算多边形质心/矩心
前言:不规则四边形的中心 不规则四边形的出心有多种定义,以下是最常见的三种: 1.重心:重心是四边形内部所有顶点连线交点的平均位置。可以通过求解四个顶点坐标的平均值来找到重心。 2.质心:质心是四边形内部所有质点…...

IP地址如何保护网络安全
面对网络攻击时,仅依靠常态化的网络安全防御系统已捉襟见肘,如联合使用IP地址数据可以形成多元化的安全解决方案,全面监控网络活动,发现潜在威胁,制定有针对性的应对措施。 网络攻击追踪 当网站或应用遭受DDoS等网络攻…...

考研数据结构笔记(3)
顺序表存储结构 存储结构顺序结构定义基本操作的实现静态分配问题 动态分配代码功能 顺序表的特点: 顺序表小结顺序表的插入删除插入删除小结 顺序表的查找按位查找按值查找小结 存储结构 顺序结构 定义 线性表是具有相同数据类型的n(n>0)个数据元素的有限序列(每个数据元素…...

第二讲 数据结构 AcWing 827. 双链表
目录 双链表代码 && 思路 双链表 实现一个双链表,双链表初始为空,支持 5 种操作: 在最左侧插入一个数; 在最右侧插入一个数; 将第 k个插入的数删除; 在第 k 个插入的数左侧插入一个数;…...

假期作业 2月6号
一、填空题 1、一个类的头文件如下所示,num初始化值为5,程序产生对象T,且修改num为10,并使用show()函数输出num的值10。 #include <iostream.h> class Test { private: static int num; public: Test(int); void show(); };…...

【wu-lazy-cloud-network】Java自动化内网穿透
项目介绍 wu-lazy-cloud-network 是一款基于(wu-framework-parent)孵化出的项目,内部使用Lazy ORM操作数据库,主要功能是网络穿透,对于没有公网IP的服务进行公网IP映射 使用环境JDK17 Spring Boot 3.0.2 功能 1.内网…...

【C++】C++入门(二)
个人主页 : zxctsclrjjjcph 文章封面来自:艺术家–贤海林 如有转载请先通知 文章目录 1. 前言2. 缺省参数2.1 缺省参数概念2.2 缺省参数分类 3. 函数重载3.1 函数重载概念3.2 C支持函数重载的原理--名字修饰(name Mangling) 1. 前言 在前面一篇文章中简…...

6.electron之上下文隔离,预加载JS脚本
如果可以实现记得点赞分享,谢谢老铁~ Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中,因此它允许你仅需一个代码仓库,就可以撰写支持 Windows、…...

【翻译】 Processing的安卓项目构建(译者用的是Android Studio)
原文链接:https://github.com/processing/processing-android/wiki/Building-Processing-for-Android,版本Apr 2, 2023 译者声明:这个文档是开源公开的,协议是GNU协议。译者自己得使用这个文档,所以才翻译的࿰…...

华为机考入门python3--(8)牛客8-合并表记录
分类:字典排序 知识点: 将输入转成int的列表 my_list list(map(int, input().strip().split( ))) 将列表转为元组 tuple(my_list) 访问元素为元组的列表 for first, second, third in my_list: 对字典进行排序 sorted(my_dict.items())…...

vue3-内置组件-KeepAlive
KeepAlive <KeepAlive> 是一个内置组件,它的功能是在多个组件间动态切换时缓存被移除的组件实例。 基本使用 默认情况下,一个组件实例在被替换掉后会被销毁。这会导致它丢失其中所有已变化的状态——当这个组件再一次被显示时,会创建…...

RxJava Subject
目录 AsyncSubjectBehaviorSubjectPublishSubjectReplaySubjectSerializedSubjectUnicastSubject 在Rxjava中, Subject可以同时表示Observer和Observable, 允许从单个源到多个子观察者multiple child Observers。 除了 onSubscribe(io.reactivex.disposables.Dispos…...

[N-141]基于springboot,vue网上拍卖平台
开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plusredi…...

新能源光伏发电设计全面解析
伴随碳达峰、碳中和“双碳”政策大力推行,以及新能源市场的利好,目前多个城市在大力推进光伏发电项目,本篇文章将详细介绍关于光伏发电设计的信息。 一、光伏发电概念 光伏发电是指利用太阳辐射能在太阳能电池板上产生的电能,通…...

踩坑实录(Third Day)
临近年关,同事们该回家的也都回家了,所以我对工作的欲望不是很强烈,所以就主要是自己学习了一下,在 B 站看看视频,自己敲代码,所以今天没遇到什么坑,但是可以分享一下之前踩到的两个坑。 此为第…...

Linux联网安装MySQL Server
yum安装 以下代码复制粘贴到控制台即可 yum list | grep mysql-server #查看可以下载的MySQLyum install -y mysql-server #安装MySQLmysql_secure_installation #引导安装 引导安装实例如下 systemctl enable mysqld 设置开机自动启动 systemctl sta…...

使用GDI画图片生成合成图片并调用打印机进行图片打印
使用GDI画图片生成合成图片并调用打印机进行图片打印 新建窗体应用程序PrinterDemo,将默认的Form1重命名为FormPrinter,添加对 Newtonsoft.Json.dll用于读写Json字符串 zxing.dll,zxing.presentation.dll用于生成条形码,二维码…...

【PyQt】04-Designer
文章目录 前言一、初级 Designer1.1 拖拽设计界面1.2 搞定之后记得保存ui文件1.3 载入代码1.4 运行结果 二、登入界面代码效果展示账号密码错误时账号和密码正确 总结 前言 自然还是跟着王铭东老师学的 一、初级 Designer 1.1 拖拽设计界面 进度条是这个 1.2 搞定之后记得保…...

第4节、电机多段转动【51单片机+L298N步进电机系列教程】
↑↑↑点击上方【目录】,查看本系列全部文章 摘要:本节介绍用控制步进电机三个主要参数角度、速度、方向,实现简单的步进电机多段控制 一、目标功能 输入多个目标角度,以及每个角度对应的速度,实现步进电机的多段多速…...

算法学习——华为机考题库1(HJ1 - HJ10)
算法学习——华为机考题库1(HJ1 - HJ10) HJ1 字符串最后一个单词的长度 描述 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾) 输入描述&…...

PSQL常用操作
目录 前言 准备工作 添加postgres用户 初始化数据库 启动服务 创建数据库 psql连接数据库 常规操作 数据库 schema相关 插件 其他 前言 老折腾,还是记录点啥吧...... 基于本地PG数据库(打包为绿色版本了),实操记录,版本pgsql12…...

C++ “万能血“ void*指针
本篇文章我们来介绍一下C “万能血” void指针 为什么说他万能呢? 原因:C void* 是一种特殊的指针类型,可用于存放任意对象的地址。在函数传参中也可以作为任何实参的形参 void型详细介绍 void* 是C中的一种特殊的指针类型,被称为"无类…...

微信小程序新手入门教程四:样式设计
WXSS (WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式,决定了 WXML 的组件会怎么显示。 WXSS 具有 CSS 大部分特性,同时为了更适合开发微信小程序,WXSS 对 CSS 进行了扩充以及修改。与 CSS 相比,WXSS …...

类银河恶魔城学习记录1-6 Flip基本设置源代码 P33
Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Player.cs using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; us…...