【JavaScript】——“重学前端”04对象——对象的分类

原生对象、内置对象、宿主对象的区别 4、一些宿主会把自己提供的对象/构造器也称为“原生对象”,例如InternetExplorer7就把它提供的XMLHttpRequest()称为原生的——与此相对的是在它的更早先版本中通过“newActiveXObject(‘Microsoft.XMLHTTP’)”这样的方法创建的对象。这种情况下,读者应注意到“宿主的原生对象”与“引擎的原生对象”之间的差异。其实说白了就是,ECMAScript官方未定义的对象都属于宿主对象,因为其未定义的对象大多数是自己通过ECMAScript程序创建的对象。... 阅读详情

JavaScript 中的对象分类:

宿主对象(host Objects):由 JavaScript 宿主环境提供的对象,它们的行为完全由宿主环境决定。
内置对象(Built-in Objects):由 JavaScript 语言提供的对象。
固有对象(Intrinsic Objects ):由标准规定,随着 JavaScript 运行时创建而自动创建的对象实例。
原生对象(Native Objects):可以由用户通过 Array、RegExp 等内置构造器或者特殊语法创建的对象。
普通对象(Ordinary Objects):由{}语法、Object 构造器或者 class 关键字定义类创建的对象,它能够被原型继承。

宿主对象:

在浏览器环境中,我们都知道全局对象是 window,window 上又有很多属性,如document。

全局对象 window 上的属性,一部分来自 JavaScript 语言,一部分来自浏览器环境。


宿主对象也分为固有的和用户可创建的两种,比如 document.createElement 就可以创建一些 dom 对象。
宿主也会提供一些构造器,比如我们可以使用 new Image 来创建 img 元素。

内置对象·固有对象:

固有对象是由标准规定,随着 JavaScript 运行时创建而自动创建的对象实例。
固有对象在任何 JS 代码执行前就已经被创建出来了,它们通常扮演者类似基础库的角色。我们前面提到的“类”其实就是固有对象的一种。

内置对象·原生对象:

把 JavaScript 中,能够通过语言本身的构造器创建的对象称作原生对象。

按照不同应用场景,把原生对象分成了以下几个种类。

 通过这些构造器,我们可以用 new 运算创建新的对象,所以我们把这些对象称作原生对象。

几乎所有这些构造器的能力都是无法用纯 JavaScript 代码实现的,它们也无法用class/extend 语法来继承。所以,我们可以认为,所有这些原生对象都是为了特定能力或者性能,而设计出来的“特权对象”。

用对象来模拟函数和构造器:

任何对象只需要实现 [[call]],它就是一个函数对象,可以去作为函数被调用。

而如果它能实现 [[construct]],它就是一个构造器对象,可以作为构造器被调用。

用户用 function 关键字创建的函数必定同时是函数和构造器。不过,它们表现出
来的行为效果却并不相同。

对于宿主和内置对象来说,它们实现 [[call]](作为函数被调用)和 [[construct]](作为构
造器被调用)不总是一致的。

//内置对象 Date 在作为构造器调用时产生新的对象,作为函数时,则产生字符串
 console.log(new Date); // 1
 console.log(Date()); //Tue Dec 06 2022 08:47:16 GMT+0800 (中国标准时间)
//浏览器宿主环境中,提供的 Image 构造器,则根本不允许被作为函数调用。
console.log(new Image); // <img>
console.log(Image());// 抛出错误

再比如基本类型(String、Number、Boolean),它们的构造器被当作函数调用,则产生类型转换的效果。


对于用户使用 function 语法或者 Function 构造器创建的对象来说,[[call]] 和[[construct]] 行为总是相似的,它们执行同一段代码。

function f(){
 return 1;
}
var v = f(); // 把 f 作为函数调用
var o = new f(); // 把 f 作为构造器调用

在固有对象和原生对象中,有一些对象的行为跟正常对象有很大区别:

它们常见的下标运算(就是使用中括号或者点来做属性访问)或者设置原型跟普通对象不同:

Array:Array 的 length 属性根据最大的下标自动发生变化。
Object.prototype:作为所有正常对象的默认原型,不能再给它设置原型了。
String:为了支持下标运算,String 的正整数属性访问会去字符串里查找。
Arguments:arguments 的非负整数型下标属性跟对应的变量联动。
模块的 namespace 对象:特殊的地方非常多,跟一般对象完全不一样,尽量只用于import 吧。
类型数组和数组缓冲区:跟内存块相关联,下标运算比较特殊。
bind 后的 function:跟原来的函数相关联。

手把手教你用U盘给海信IP501H刷机:GK6323V100C芯片的4.4.2和9.0固件实战 本文详细介绍了海信IP501H电视盒子基于GK6323V100C芯片的刷机实战指南,涵盖Android 4.4.2强刷和Android 9.0免拆刷机两种方案。从工具准备、短接操作到ADB调试,提供全流程解析和常见问题解决方案,帮助用户安全高效地完成刷机操作。 阅读详情

相关推荐

SDRAM控制器——添加读写FIFO

用FIFO实现数据缓存

H19981118的博客 2626

JavaScript 原生对象、内置对象、宿主对象的区别

我对三者的理解,三个的概念区别分别是: 内置(Build-in)对象:总是在引擎初始化阶段就被创建好的对象,是原生对象的一个子集 原生(Naitve)对象:除了内置对象,还包括了一些在运行过程中动态创建的对象 宿主对象:宿主对象不是引擎的原生对象,而是由宿主框架通过某种机制注册到JavaScript引擎中的对象 一、原生对象 ECMA-262 把原生对象定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。 包含 Object、Function、Array、String、Boo.

JINGinC的博客 968

Cherry Studio 新手必看:5分钟搞定MCP服务器配置(附常见问题解决)

本文为Cherry Studio新手提供了详细的MCP服务器配置指南。文章从核心概念入手,解释了Cherry Studio作为MCP客户端如何通过MCP协议安全、标准化地扩展AI助手能力。重点讲解了uv和Bun环境的安装与常见网络问题的解决方案,并演示了如何添加首个MCP服务器(如mcp-server-fetch),助你快速构建可扩展的智能工作流。

corn8的博客 595

JavaScript对象类别划分(原生对象、内置对象、宿主对象)

原生对象(native object) 原生对象也可以叫做本地对象或者内部对象。ECMA-262 把原生对象(native object)定义为 " 独立于宿主环境的 ECMAScript 实现提供的对象 "。所以每一种宿主环境都可以使用原生对象。 JavaScript中的原生对象有Object、Function、Array、String、Boolean、Math、Number、Date、Re...

越努力,越幸运! 822

法律AI工具横评:Kimi Work与WorkBuddy,谁更适合法律人?

在人工智能技术日益普及的今天,自然语言处理(NLP)和大语言模型(LLM)正深刻改变着专业领域的工作范式。其核心原理在于通过海量数据训练,使模型能够理解、生成和推理人类语言。这一技术价值在于将从业者从繁琐、重复的信息处理工作中解放出来,极大提升工作效率与知识获取的便捷性。在法律、金融、咨询等对文本处理要求极高的行业,AI助手已展现出在文档分析、信息检索和内容生成方面的巨大潜力。具体到法律应用场景,AI工具能够辅助完成合同审查、法律检索和文书起草等核心任务,成为专业人士的得力助手。本文聚焦于近期备受关注的两款

weixin_30279671的博客 559

uniapp [安卓苹果App端] - 详细实现自定义水印相机功能,调用手机摄像头打开相机并在周围悬挂自定义水印,使用相机拍照后添加水印文字或样式,uniapp APP端水印相机完整源码,兼容强大可靠

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果app,水印相机,uniapp水印相机,Uniapp安卓app实现水印相机,uniapp苹果ios水印相机,打开系统相机拍照添加水印,地点打卡相机,水印相机(水印照片,图片加水印),uniapp自定义水印相机,制作水印相机给图片添加水印并且保存图片至本地,uniapp拍照图片加水印,水印相机功能,手机调起摄像头拍照时自动插入文字、图片动态水印效果,支持水印显示拍摄者当前城市定位、自由调整水印大小和位置,手机拍照时

🏆 前端领域优质创作者 1万+

js中宿主对象和原生对象以及内置对象的区别

内置对象:在JavaScript引擎初始化阶段就被创建好的对象,也是原生对象的一种 原生对象:除了内置对象,还包括一些在JavaScript运行过程中动态创建的对象 宿主对象:不是引擎的原生对象,与引擎无关,是JavaScript的宿主(运行)环境注入到JavaScript引擎中的对象 原生对象具体包括哪些:Object,Array,Date,String,Number,RegExp(正则表达式) 内置对象就两种:Global和Math(数字对象) 宿主对象:由于ECMAScript(网页的)的运

yezi153的博客 858

抓包网络调试工具 reqable抓包教程

如果CA根证书未安装成功,网络图标是黄色,点击盾牌图标可以进入CA根证书安装界面,详细步骤请阅读。在API调试中,获取流量是第一步也是最基本的操作,这里讲解下如何使用Reqable获取流量,通俗地讲就是抓包。我们可以选择一个图片请求,双击打开详情面板,能够看到该请求的详细信息。如果系统代理未设置,网络图标是黄色,点击网络图标可以自动设置系统代理。此域名的结构树,可以查看该域名下所有请求的目录结构,点击选择可以查看该请求的详情。首先,需要启用Reqable的调试功能,点击最右上角的。打开浏览器,输入地址。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2556

javascript自学之路(二)————js对象类型之宿主对象

Js中的宿主对象: 包括浏览器中的window(BOM)和document(DOM)对象 一、  DOM对象 包括:Document、Element、Attribute、Event四大对象 1.      Document 每个载入浏览器的 HTML 文档都会成为 Document 对象。 Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。 提示:Doc

孙文峰的专栏 777

Open3D 点云DBSCAN聚类算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,能够识别任意形状的聚类,并处理噪声数据。

纵马踏花向自由 1833

Ceph入门到精通-存储桶通知

这 通知还可以根据前缀的匹配项过滤掉事件,并且 (1) 键的后缀,(2) 附加到对象的元数据属性, 或 (3) 对象标签。在此模式下,操作仅在以下之后确认(确认) 通知将发送到主题的已配置终端节点。这意味着 通知的往返时间(发送 通知主题的终端节点以及接收 确认)被添加到操作本身的延迟中。要更新主题,请使用用于创建主题的相同命令(但在 更新时,使用现有主题的名称和不同的终端节点值)。端口:对于未加密的连接,默认为 5672,对于未加密的连接,默认为 5671 SSL 加密连接。(默认情况下,这是“假的”。

隔壁老瓦的专栏 1131

重学Javascript - 极客时间《重学前端》笔记

编程语言的一般规律是: 用一定的词法和语法,表达一定的语义,从而操作运行时 Javascript文法(词法+语法) 词法 Lexical 第一类:标识符 第二类:常数第三类:保留字 Token (不同语言的词法分析主要是这里不同)第四类:界符 ‘/*’、‘//’、 () { } [ ] " " ' 等第五类:运算符 <、<=、>、...

weixin_30872499的博客 1008

C#项目实战——【实例】企业人事管理系统(二):4、数据库与数据表设计;5、创建项目;

(1)展开新建的db_PWMS数据库节点,选中“表”节点,单击鼠标右键,在弹出的快捷菜单中选择“新建表”命令,如下图:(2)在SQL Server 2008管理器的右边显示一个新表,这里输入要创建的表中所需要的字段,并设置主键,如下图:(3)单击“保存”按钮,弹出“选择名称”对话框,如下图,输入要新建的表名“tb_Login”,单击“确定”按钮,即可在数据库中添加一个表。

做有价值的事,积累有价值的笔记! 1621

重学前端

01 明确学习路线和方法 建立知识架构 一种是 html/css/js(但是除了这些语言 还有打包/测试/dom和bom等等问题) 一种是 文法/语义/运行时(粗略视为语法/语法的意义/算法和数据结构) 追本溯源 了解背景 02 前端知识架构图 写在另一篇 juejin.im/post/5cbe89… 前端架构的主要职责是兼容性、复用和能力扩展 03/04语义化 写在上面那一篇 juejin.im...

weixin_34259232的博客 154

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

极客时间-重学前端

极客时间-重学前端。

淡水瑜的博客 507

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

软件模块化设计核心:抽象、接口与契约实践指南

模块化是应对软件复杂性的基础工程能力,其本质是通过抽象封装变化、以清晰接口隔离实现、用可验证契约约束协作。它源于抽象数据类型(ADT)和信息隐藏原理,核心价值在于控制依赖蔓延、降低修改风险、支撑团队并行开发。在微服务架构、遗留系统重构、跨团队协同等典型场景中,模块化直接决定系统的可维护性与演进效率。本文聚焦模块化落地的三大支柱——抽象不是删代码而是定义行为契约,模块不是文件夹而是责任自治单元,契约不是注释而是可测试、可执行、可演化的协议,并结合手绘依赖图、契约说明书、契约测试等实操方法,帮助工程师从理论走向

weixin_33841722的博客 380

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

两年经验前端带你重学前端框架必会的ajax+node.js+webpack+git等技术 第三章

两年经验前端带你重学前端框架必会的ajax+node.js+webpack+git等技术Day3 背景是淡茜红

Java、Python、AI、前沿技术等领域的技术总结和经验分享。 1万+

重学前端-开篇词:从今天起,重新理解前端

开篇词:从今天起,重新理解前端 01 | 前端发展史:从青铜到黄金时代 1)前端的史前记忆:“青铜时代” 2)进入发展期的前端:“白银时代” 3)从前端到“全端”:“黄金时代” 02 | 前端开发之痛:散点自学+基础不牢 1) 散点自学:对前端的知识体系和底层原理没有真正系统地理解。 2) 做了管理,技术没跟上,并且错过了最佳的学习时间,只能在工作中被动地接受需求解决问题,开始焦虑自己的未来和竞争力。 03 | 前端工程师成长的两个视角 1) 一是立足标准,系统性总结和整理前端知识,建立自己的认知

z_z_z_666666的博客 280

2019最新《大神带你重学前端教程》

目录 ├─html │├─01-明确你的前端学习路线与方法_For_group_share.html │├─02-列一份前端知识架构图_For_group_share.html │├─03-HTML语义:div和span不是够用了吗?_For_group_share.html │├─04-HTML语义:如何运用语义类标签来呈现Wiki网页?_For_group_share.html...

asdafasfa的博客 328

前端工程师如何用LangChain.js开发生产级AI Agent

AI Agent是新一代人机协作的核心范式,其本质是将自然语言意图转化为可执行业务动作的自动化系统。它依赖于事件驱动、状态管理与异步协调等基础工程能力,而这些正是前端工程师长期锤炼的核心素养。LangChain.js并非AI模型框架,而是专为JavaScript生态设计的Agent标准协议层,通过TypeScript类型安全、Promise原生集成与模块化架构,统一了模型调用、业务逻辑与前端交互。它让前端开发者能直接在Vite/React/Vue项目中构建带记忆、支持RAG、可调用API的智能体,并无缝部署

weixin_32705179的博客 259

前端知识自检——Javascript基础之变量和类型

JavaScript基础 winter在他的《重学前端》课程中提到: 到现在为止,前端工程师已经成为研发体系中的重要岗位之一。可是,与此相对的是,我发现极少或者几乎没有大学的计算机专业愿意开设前端课程,更没有系统性的教学方案出现。大部分前端工程师的知识,其实都是来自于实践和工作中零散的学习。 建立自己的知识体系,帮助更系统的学习,同时能知道自己有哪些不足 一、变量和类型 1.变量和类型 J...

qq_41534913的博客 665

你不知道的JavaScript类型细节?【上】

Undefined、Null

qq_38526167的博客 300

重学前端(9)正则还真要多练

正则表达式简介 什么是正则表达式 正则表达式:用于匹配规律规则的表达式,正则表达式最初是科学家对人类神经系统的工作原理的早期研究,现在在编程语言中有广泛的应用。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 正则表达式...

weixin_33845881的博客 136

better-fe 前端技术周刊 - 2019/04/29

深阅读 监控平台前端SDK开发实践 推荐理由:监控是提高故障处理能力和保障服务质量必需的一环,它需要负责的内容包括:及时上报错误、收集有效信息、提供故障排查依据。本文通过深度分析监控从而打造出比较健全的监控平台。 如何优雅地处理前端异常? 推荐理由:前端是距离用户最近的一方,处理前端异常不仅可以增强体验,重要的是可以远程定位问题,比如说静态资源加载失败等常见异常,文中分析比较了几种方式,组合+分类...

weixin_34279579的博客 188

MusePublic与Vue.js集成:前端AI组件开发指南

本文介绍了如何在星图GPU平台上自动化部署🏛️ MusePublic 圣光艺苑 | Atelier of Sacred Light镜像,赋能Vue前端应用实现AI增强功能。该镜像支持浏览器内轻量级AI能力,典型应用场景包括数据图表智能解读、表单文本实时建议及自然语言转可视化配置,显著提升中后台系统的交互智能性与开发效率。

weixin_42511373的博客 90

2024年2024前端面试经常被问到的题(附答案)_前端面试题,面试web前端开发自我介绍怎么写

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

2301_82243710的博客 1099
上一篇: 【JavaScript】——“重学前端”03对象——JavaScript需要模拟面向对象吗
下一篇: 【JavaScript】——“重学前端”05JavaScript执行——Promise里的代码为什么比setTimeout先执行?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值