【javascript笔记】javascript学习笔记(一)-程序员宅基地

技术标签: 学习  笔记  javascript  

前言

       在研习JavaScript的旅程中,我将不断积累并修正学习笔记,若其中存在谬误,敬请各位不吝赐教予以纠正。

1.1 JavaScript实现

        JavaScript的实现涵盖了三个核心组成部分:首先是ECMAScript标准定义的核心语法及语言特性;其次,文档对象模型(DOM)用于处理网页内容,提供了一种与HTML和XML文档交互的方法;最后,浏览器对象模型(BOM)则主要涉及与浏览器窗口进行交互的能力,包括控制浏览器窗口、获取浏览器信息等功能。

1.1.1 ECMAScript

       ECMAScript,作为由ECMA-262标准所精确界定的语言规范,其本身并不绑定于任何特定的运行环境,而Web浏览器仅是众多可能承载该规范实现的宿主环境之一。这门语言的核心并未内置诸如输入/输出这样的机制,而是依赖于宿主环境提供基础实现以及与该环境交互所需的扩展接口。

        宿主环境如Web浏览器不仅实现了ECMAScript的基本语言结构,还通过扩展机制补充了与环境紧密相关的额外功能。例如,文档对象模型(DOM)就是基于ECMAScript核心数据类型和语法构建的一个扩展层,它专为与网页内容交互设计。另外,诸如Node.js这样的服务器端JavaScript平台也是ECMAScript的另一种宿主环境,它们同样扩展了ECMAScript核心,赋予其访问系统资源和进行服务器端编程的能力。

       从根本上来说,ECMAScript规范详尽地定义了这门语言的基础构造块,包括但不限于:语法结构、数据类型、语句种类、关键字列表、保留字、运算符集合以及全局对象体系。

1.1.2 DOM

       文档对象模型(Document Object Model, DOM)实质上是一个通用的应用编程接口,它不仅适用于HTML,也同样适用于扩展的XML文本文档结构。DOM的关键作用在于将整个HTML或XML文档抽象表达为一系列相互关联的节点层级结构,其中每个页面组件(如元素、属性、文本等)都被封装成一个具有特定类型和数据的节点。

       通过构建一棵表示文档结构的树形模型,DOM赋予开发者强大的能力,能够灵活地操纵网页的内容和布局。利用DOM API,开发人员可以轻而易举地执行诸如删除、插入、替换和修改节点等各种操作,从而实现在不刷新页面的情况下动态更新页面的内容和样式表现。

       值得注意的是,尽管JavaScript是最常见的与DOM交互的语言,但实际上DOM API并不仅限于此,它还可以通过其他多种编程语言进行访问和操作,广泛应用于各种支持web开发的技术栈中。

1.1.3 BOM       

      使用浏览器对象模型(BOM),开发者能够驾驭那些超越HTML页面显示本身的浏览器功能。独特但也颇具挑战性的是,BOM起初并没有统一的标准规范,它的诸多功能是由各个浏览器厂商自行实现的。然而,随着HTML5标准的发布,这一状况得到了显著改善。HTML5以官方标准的形式囊括了大量原本属于BOM范围内的功能,从而为跨浏览器兼容性问题带来了标准化的解决方案。

      总体来看,BOM主要关注浏览器窗口及其嵌套的子窗口(frames)的管理与交互,同时,许多与浏览器环境密切相关的扩展功能也被宽泛地视为BOM的一部分。这些扩展功能包括但不限于:

  • 弹出新浏览器窗口的能力;
  • 移动、缩放和关闭浏览器窗口的能力;
  • navigator对象,提供关于浏览器的详尽信息;
  • location对象,提供浏览器加载页面的详尽信息;
  • screen对象,提供关于用户屏幕分辨率的详尽信息;
  • performance对象,提供浏览器内存占用、导航行为和时间统计的详尽信息;
  • 对cookie的支持;
  • 其他自定义对象,如XMLHttpRequest和IE的ActiveXObject

这些BOM对象和功能极大地丰富了JavaScript在浏览器环境下的应用范围,并且随着标准化进程的推进,它们在现代浏览器中变得更加可靠和易于使用。

  

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_61097007/article/details/137454257

智能推荐

sqlite创建索引最佳实践-程序员宅基地

文章浏览阅读2.2k次。创建索引可以使 SQLite 数据库更快地执行查询,但是也会增加插入、更新和删除的时间。因此,在创建索引时,应该考虑查询和修改操作的平衡。在创建索引时,有几点可以遵循的最佳实践:使用 WHERE 子句中经常出现的列创建索引。使用列上的唯一约束或主键创建唯一索引。这有助于防止重复的值。避免使用过于长的索引,因为这会增加存储和维护索引的成本。如果表中有大量的 INSERT、UPDAT..._sqlite 创建索引

%d输出float类型,%f输出int类型_int型能用%f输出吗-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏22次。// 输出格式与类型不一致,输出结果实际上与存储有关 // 1.int以%f格式输出,结果一般为0.000000 // 2.long long 类型的很大的数,用printf(“%f”)打印出来可能为一个小数; // 3.double、float以%d格式输出(输出时,float会转化为double存储形式;%d取低32位) // (1)结果一般为绝对值很大的数(当浮点数不能精确表示时,低32位不为0) // _int型能用%f输出吗

目标检测标注数据的检查和可视化_目标标注信息统计可视化-程序员宅基地

文章浏览阅读4.6k次。标注数据是一件十分枯燥的重复性工作。在标注数据时,有时因为数据量大,类别多,会出现错标、误标的情况,这时就需要对标注数据进行检查并且修改。_目标标注信息统计可视化

flutter 项目实践2_jj2d.top-程序员宅基地

文章浏览阅读2.5k次。本片文章来自与我自己的有道云笔记 要看图片请点击链接文档:Day 4_3 项目实践2.md链接:http://note.youdao.com/noteshare?id=f28e3058fea4d26f1b32bdc21f1a220c&sub=A3757D0FAF4C4BC29A8CF2E6F1C8DBD6上次做了什么我们把框架搭好了IndexedStack 分开了基础的页面制作了简单的首页 读取json文件 然后展示我们的首页基本就算制作完了然后我们想做一些展示home_cont_jj2d.top

elasticsearch-head连接问题_elasticsearch 开启xpack head如何连接-程序员宅基地

文章浏览阅读2.8k次。场景:最近打算使用elasticsearch做日志搜索,使用elasticsearch-head作为一个图形化界面查看index、type、document信息。elasticsearch 7.14.1mobz/elasticsearch-head:5地址:https://github.com/mobz/elasticsearch-head看完这个readme文档后,计划使用docker方式进行部署。1.更改elasticsearch.yml文件,包括xpack等配置,示例如下:_elasticsearch 开启xpack head如何连接

Selenium 根据元素文本内容定位_selenium java根据文字定位-程序员宅基地

文章浏览阅读1.8k次。使用xpath定位元素时,有时候担心元素位置会变,可以考虑使用文本内容来定位的方式。例如图中的【评价】按钮,只有按钮文本没变,就可以定位到该元素。_selenium java根据文字定位

随便推点

关于GEE导出数据时 含空值的栅格图像_selfmask-程序员宅基地

文章浏览阅读3.9k次,点赞8次,收藏25次。GEE提供的卫星数据大多数是有丢失的,若不加操作直接导出为tif,matlab读出来的矩阵该是空值的都是nan,然而arcgis并不能识别空值为nodata,导致制图非常难受。加上unmask函数可以让空值变为某个数字,这里设为-9999,方便后续处理。selfMask()则可以将图像的负值都判定为空。Export.image.toDrive({ image: xinjiang_CH4_anomaly.unmask(-9999), description: 'xinjiang_ch4_anom_selfmask

jmeter聚个报告怎么看qps_jmeter 聚合报告参数详解及TPS 解析-程序员宅基地

文章浏览阅读2.1k次。1、获得TPS插件https://www.cnblogs.com/beginner-boy/p/7806220.html 参见,已保存百度云盘2、添加后,记得使用调度器——每秒50个并发,持续60秒,观察TPS3、TPS,执行一次事务(包括请求、请求服务器、等待服务器返回等等,比如一个TPS事务,可能触发3个QPS请求)PS:一秒钟处理的事务数。TPS值越大,一秒钟处理的事务数就越多,说明处理速..._jmeter查看qps

浙大 PAT 甲级 1077 Kuchiguse_pat甲级可以用翻译吗-程序员宅基地

文章浏览阅读135次。读题目真是要笑死我了…太不正经了。很简单的20分~将题意翻译成代码即可。#include<iostream>#include<string>using namespace std;int main(){ int N; scanf("%d", &N); getchar(); string base; getlin..._pat甲级可以用翻译吗

centos7 svn服务器搭建_svn co authentication方法-程序员宅基地

文章浏览阅读1.5k次。基于centos7 的svn服务器配置_svn co authentication方法

capilot激活时遇到Sign in failed: Error: network error_sign in failed. reason: could not log in with devi-程序员宅基地

文章浏览阅读922次。capilot激活遇到问题,Sign in failed: Error: network error_sign in failed. reason: could not log in with device flow on cocopilot.org:

mysql 存储过程 序列_Oracle 生成序列号存储过程-程序员宅基地

文章浏览阅读147次。项目中经常要根据年月日规则生成序列号,简单写了个存储过程可根据需要扩展 一、序列号存储表 -- Create tablecreate table SYS_项目中经常要根据年月日规则生成序列号,简单写了个存储过程可根据需要扩展一、序列号存储表-- Create tablecreate table SYS_GENKEY(DATESTR VARCHAR2(50),MAXCOUNT NUMBER,TYP..._mysql 存储过程 序号

推荐文章

热门文章

相关标签