javascript教程 - 第五部分 高级话题

JavaScript高级实战教程,带你深入学习JS高级应用 在互联网发展的早期,JavaScript就已经成为支持网页内容交互体验的基础技术。随着时间推移,JavaScript业已升级成为互联网的核心技术。 长期以来,我都在学习JavaScript。学JS一时爽,一直学习一直爽。 在学习过程中,接触很多学习资料,图书、视频等不一而足。 今天分享给大家的就是动力节点最新的JavaScript高级篇教程 JavaScript高级主要学习: 继承和原型链 严格模式 JavaScript 类型数组 内存管理 并发模型以及事件循环 JavaScript课程介 阅读详情
javascript教程 - 第五部分 高级话题


在这一章中,我们将大致的学习一下一些 javascript 中比较高级的话题,在此我们只是通过一些例子大致学习,而不进行深入探讨。

创建你自己的对象

正如您所看到的,javascript 提供了很多网页组件和数据的对象及对象类型。但是,您的目光不能仅仅限于这些,您可以根据自己的需要创建自己的对象、属性和方法,这是很有用的,比如说您需要一个比较复杂的数据结构的时候,您就需要这样做。

在创建一个新的对象之前,您首先要创建一个数据结构。这些工作都在一个函数里边处理,在该函数中定义您的对象的属性(可以给这些属性设置初始值),然后你就可以创建居于此对象的方法了。

【构造对象函数】

每一个对象都需要一个构造对象函数,我们通过使用 new 关键字调用此函数来创建一个新的对象实例。这类函数定义了对象的属性,同时给这些属性设置初始值。您还可以在此类函数中声明对象的方法。

下边就是使用构造对象函数的一个例子,在这个函数中定义了一个新的对象 Product,此对象定义了每一个产品的基本属性:

function Product(name, num, price, shipping, quantity) {

this.name = name;
this.catalogNumber = num;
this.price = price;
this.shippingCost = shipping;
this.quantity = quantity;
}

注意关键字 this,它指向被创建的对象。您可以像下边那样创建新的 Product 对象实例:

var item1 = new Product("blender", "9003-2", 24.95, 2.50, 2);
var item2 = new Product("juicer", "9117-1", 49.95, 5.00, 1);

你还可以像访问其它对象的属性那样访问 Product 对象的属性:

var total = (item1.price + item1.shippingCost) * item1.quantity;


【定义方法】

上边的例子中通过访问 Product 对象 item1 的 price、shippingCost 和 quantity 属性计算 item1 的总价值,如果我们需要经常计算总价值,那么像上边那样用起来就很不方便,不过不用担心,我们可以为计算总价值创建一个方法,很简单,只要在构造对象函数中添加一行代码:“this.totalCost = totalCost;”,然后在构造对象函数的后边定义一个名为 totalCost 的函数:

function Product(name, num, price, shipping, quantity) {

this.name = name;
this.catalogNumber = num;
this.price = price;
this.shippingCost = shipping;
this.quantity = quantity;
this.totalCost = totalCost;
}

function totalCost() {

return ((this.price + this.shippingCost) * this.quantity);
}

注意在构造对象函数中定义该对象方法的格式:this.methodName = functionName,这里的方法名和函数名并不需要使用相同的名字,我们这里是为了看得清楚才使用相同的名字 totalCost 的。现在我们就可以使用此对象的方法了:

var total = item1.totalCost();

如果想了解如何构建和使用自定义对象,可以看一下这个 在线示例 ,这个例子中定义了一个简单的购物车,我们构建的对象名为 ShoppingCart,同时还给这个对象定义了增加和删除产品项的方法。

Cookies

使用 cookie,您可以将一些数据信息保存在客户端用户的机器中,而在以后用户浏览您的网页的时候再调出来使用。通常我们使用 cookie 保存一些数据、登陆帐号等。

创建一个 cookie 需要用到下边的信息:

cookie 的名字=cookie的值 - 这个字符串表示 cookie 的数据,请看下边;
结束时间 - 您的 cookie 在客户端保留的时间,即是截止时间,如果当天的时间大于这个日期时间,那么客户端用户的机器将会删除这个 cookie;
域 (Domain) 和路径 (Path) - 这些是用于安全方面的,默认的情况下,域的值是服务器主机的域名,路径是当前这个设置 cookie 的页面在主机中相对于域名的路径 (这样就只有在相同路径下的那些页面可以使用此 cookie 了);
安全性 - 如果这个安全性标志被设置成 true 的话,那么 cookie 将会在一个安全的方式 (SSL 连接) 下发送到客户端。
通常,您只需要设置前两项 "cookie 的名字=cookie 的值" 和 "结束时间" 即可。在设置结束时间的时候,您可以使用 Date 对象,但要注意格式,单位是毫秒。下边就是一个例子,在这个例子中,"结束时间" 被设置成从当前时间算起过任意多天 (此例设置的 "结束时间" 是 7 天后):

var days = 7;
var expdate = new Date();
expdate.setTime (expdate.getTime() + (86400 * 1000 * days));

我们通过 documents.cookie 属性来对 cookie 的数据进行存取。cookie 的格式是 "cookie的名字=cookie的值; expires=cookie的结束时间; path=路径",而所有的 cookie 都是保存在 documents.cookie 属性中的,它们之间使用分号 ";" 分开,所以虽然您可以单独地设置各个 cookie,但却要通过切分操作才能得到各个 cookie 的值,请参照下边的示例。

【经常用到的 cookie 函数】

为了让您有个好的开始,下边的三个函数分别提供了设置、删除、获取 cookie 的功能:

function setCookie (name, value, expires) {

documents.cookie = name + "=" + escape(value) +
"; expires=" + expires.toGMTString() + "; path=/";
}

function getCookie(name) {

var search;

search = name + "="
offset = documents.cookie.indexOf(search)
if (offset != -1) {
offset += search.length ;
end = documents.cookie.indexOf(";", offset) ;
if (end == -1)
end = documents.cookie.length;
return unescape(documents.cookie.substring(offset, end));
}
else
return "";
}

function deleteCookie(name) {

var expdate = new Date();
expdate.setTime(expdate.getTime() - (86400 * 1000 * 1));
setCookie(name, "", expdate);
}

escape() 和 unescape() 是 javascript 的内建函数,它们用来将一些特殊字符转换成十六进制代码。通常情况下,cookie 中的名字、值都不能包含任何空格、逗号或分号。使用这两个函数可以将这一类的字符转换成合法的可供 cookie 使用的十六进制字符。

删除所有您不再使用的 cookie 是一个很好的习惯,因为客户端会限制您可以存储的 cookie 个数 (对于 Netscape 浏览器来说:每一个主机/域最多是 20 个 cookie,总共可以存储 300 个)。上边的删除 cookie 的函数将 cookie 的结束时间设置成前一天的时间,这样就可以达到删除的目的了。

看看这个 在线示例 就知道上边函数的用法了。

注意:以下的部分使用 javascript 1.2 ,而且只运用于 Netscape 和 IE version 4.0 或者更高版本。

事件捕捉

我们在这个教程中已经学过了事件句柄 (event handler),Internet Explorer 浏览器几乎为每一个 HTML 标记提供了事件句柄,而 Netscape 却有所不同,虽然它也为很多 HTML 标记提供了事件句柄,但是一些事件必须通过别的方法来捕捉。

【在 Netscape 中捕捉事件】

在 Netscape 4 或者更高版本的浏览器中,你可以捕捉当前浏览窗口中 window、layer 或 document 级别的对象的事件。captureEvent() 方法可以完成此操作, 此方法指定想要捕捉的事件,然后在通过编写函数来处理此事件句柄。

下边的例子中我们通知 window 对象捕捉鼠标点击的事件:

window.captureEvents(Event.CLICK);
window.document.onClick = myClick;

function myClick(even) {
...
}

请注意,我们在到 captureEvents() 方法中传送参数 Event.CLICK。这个事件对象 Event 包含了与事件有关的信息。而 Event.CLICK 是一个指向通常事件类型的对象实例,其它一些事件类型如下:

CLICK - 当鼠标点击的时候触发此事件
MOUSEDOWN - 当鼠标被按下的时候触发此事件
MOUSEUP - 当鼠标被松开的时候触发此事件
MOUSEMOVE - 当鼠标移动的时候触发此事件
KEYPRESS - 当从键盘输入的时候触发此事件
KEYDOWN - 当按下键盘的时候触发此事件
KEYUP - 当松开键盘的时候触发此事件
如果想捕捉更多的事件,您必须使用逻辑或运算符“|”来分割各个事件类型,如下边的代码所示:

window.captureEvents(Event.MOUSEDOWN | Event.KEYDOWN);
window.document.onMouseDown = myMouseDown;
window.document.onKeyDown = myKeyDown;

我们将 event 对象传递给事先安排好的事件句柄 (即此事件的处理函数),这个对象包含了一些通常的时间数据,例如它的类型等等。

【Internet Explorer 中的事件】

在 Internet Explorer 中不需要传递 event 对象,因为通常的时间对象都是 window 对象的一个属性。不幸的是,IE 的这些属性和 Netscape 的却不尽相同。

【编写具有兼容性的代码】

幸运的是,这两种浏览器之间还是有共同的代码可以使用的,最重要的是能够使用代码将两种浏览器区分开来。你可以尝试使用一些对象来试探浏览器的类型,例如,你可以使用 document.layers 对象来试探,这个对象是 Netscape 支持的对象,而相对应的 document.all 对象则是只有 IE 才支持的对象, Netscape 则不支持:

if (document.layers) {

// 在此处编写 Netscape 支持的代码
...
}

else if (document.all) {

// 在此处编写 IE 支持的代码
...
}

else {

// 在此处编写 Netscape 和 IE 都支持的代码
...
}

如果所试探的对象不存在 (即当前的浏览器不支持),它的值为空 (null) ,这就促使 if 表达式的值为“假” (false)。这种方法也可以用来防止这两种浏览器不支持该对象的老版本试图执行这些代码。

看一下这个 在线示例 将会对您又很大的帮助。例子中的代码可以在 Netscape 和 IE 两种浏览器中实现相同的效果。

正则表达式

正则表达式是用于模式匹配的,它提供了强大的字符串替换、转换以及搜索功能。

Netscape 和 IE 在正则表达式对象的使用上有细微的不同,但是下边的代码却是通用的:

var myRE = /匹配模式/标记;

匹配模式的过程被看成是逐字匹配的,同时使用正则表达式还能匹配特殊字符或特殊格式的字符串 (左边的符号是匹配模式中使用的特殊格式):

a* - 匹配零个或零个以上的字符 a。
a+ - 匹配一个或一个以上的字符 a。
. - 匹配任何字符。
a|b - 匹配字符 a 或者 b。
a{ n } - 匹配 n 个连续的字符 a。
[abc] - 匹配一个字符,这个字符是方括号“[]”中的任何一个字符,使用 [0-9] 匹配 0 到 9 的任何数字,使用 [a-z] 匹配字母 a, b, ... , z 中的任何小写字母,大写字母使用 [A-Z]。
/b - 匹配一个不以英文字母或数字为边界的字符串。
/s - 匹配一个空白的字符 (包括空格、Tab、换行等等)。
/w - 匹配一个任何英文或者数字的字符,和 [0-9a-zA-Z] 是等同的。
由于 '*' 是特殊字符,它的作用是匹配零个或零个以上的 '*' 前边的字符,所以如果想匹配字符 '*',需要在此字符前加一个反斜杠 '/' 字符。因此 '/*' 是匹配一个字符 '*'。你可以到 Netscape's javascript Reference 中去看一下有关正则表达式的细节。

标记可以是下边的值:

i - 忽略大小写。
g - 全局匹配,匹配所有符合匹配模式的字符,而不只是匹配第一个符合匹配模式的字符。
test() 方法用来比较已知的字符串,如果匹配则返回“真”值 (true)。可以看一下这个 在线示例,在这个例子中,使用了正则表达式来判断用户的输入是否符合电子邮件 (Email) 地址的格式:userid@domain.net。

动态HTML [DHTML]

动态 HTML (Dynamic HTML 或 DHTML) 给 HTML 增加了几个新的标记,同时也增加了几个 javascript 的对象。动态 HTML 的一个主要特性是充分利用网页中的层 (layer) 和位置 (position)。

在这里我们再次声明,Netscape 和 IE 在应用上是有所不同的,Netscape 增加了支持“级联样式单” (Cascading style Sheets 或 CCS) 的 <LAYER> 标记用来定位网页中的元素,而 IE 却支持更多的样式单,这些样式单都是居于 World Wide Web 联盟标准的 (可以参见第六部分的 DHTML 相关链接)。

【给页面的内容定位】

虽然 Netscape 对 CSS 的支持比较有限,但是我们还是可以很容易地使用 <LAYER> 标记来创建被定位的内容。下边的代码在两种浏览器中可以产生相同的效果:

Netscape

<layer bgcolor="#ffffcc" left=150 top=200 width=200 height=20>
显示的文本。
</layer>

IE

<div style="background-color:#ffffcc position:absolute;
left:150px; top:200px; width:200px; height:20px;">
显示的文本。
</div>

正如你所看到的,我们可以对被定位的内容块 (在上边例子中的内容块是“显示的文本”,也即是在 <layer>....</layer> 或 <div>....</div> 标记对之间的内容) 定义几个特性,例如背景颜色、字体颜色等等。top 和 left 的值用来告诉浏览器这一块内容在网页中的位置,top 是距离浏览器窗口顶部的长度,left 则是距离浏览器窗口左边框架的长度,它们的单位都是象素 (pixel)。

为了让代码在两种浏览器中都能实现相同的效果,我们可以使用前边讲过的方法首先探测一下浏览器的类型,然后再分别使用 document.writeln() 输出适用于两种浏览器的代码参见 在线示例 。

【文档对象模型DOM】

现在我们已经可以给网页中的内容定位了,但我们怎样才能熟练巧妙地使用这种方法使它成为 DHTML 技术的一部分呢?“文档对象模型” (简称 DOM) 是一个很流行的名字,它指的是在网页中的 javascript 分级对象。DHTML 为层与样式单增加了一些新的对象,你可以像使用 javascript 中其它对象那样使用这些对象。

当然,Netscape 和 IE 在 DOM 上的应用也有所不同,但是我们还是可以像上边的例子那样使用相应的代码来实现相同的效果。

你可以将一个内容块从一个地方移动 (重新定位) 到另一个地方,可以让它从看得见变成看不见。为了实现这些目的,你要针对不同的浏览器正确地处理好 javascript 对象。

让我们重新写一下上边的代码,并且在代码中给内容块加上名字,这样我们才能在程序代码中引用这些内容块作为对象来使用 (这其实就是 DOM 的一部分):

Netscape

<layer name="block1" bgcolor="#ffffcc" left=150 top=200 width=200 height=20>
Some text to display.
</layer>

IE

<div id="block1" style="background-color:#ffffcc position:absolute;
left:150px; top:200px; width:200px; height:20px;">
Some text to display.
</div>


现在我们将内容块放在 javascript 函数中当作对象来使用,同时返回此内容块对象本身:

function getBlock(name) {

// For Netscape.

if (document.layers)
return(document.layers[name]);

// For IE.

else if (document.all) {
layer = eval('document.all.' + name + '.style');
return(layer);
}

// 以上都不是,则返回 null.

else
return(null);
}

正如你所看到的,Netscape 使用 document.layers 数组来存储块对象,而 IE 则是创建名为 document.all.块名字.style 的对象来表示块。上边的函数返回了块对象,于是我们就可以使用这个返回值来访问块的属性或执行块的方法了。

现在让我们来看一下 在线示例 是如何移动一个块的。对于 Netscape 来说,我们只要设置块对象的 left 和 top 属性的值就可以达到移动块的目的,在 IE 中则是使用 pixelLeft 和 pixelTop 属性。在下边的函数 moveBlockBy 中将会改变这些属性的值:

function moveBlockBy(x, y) {

var block = getBlock("block1");

if (document.layers) {
block.left += x;
block.top += y;
}
else if (document.all) {
block.pixelLeft += x;
block.pixelTop += y;
}
}


参数 x 和 y 是块在水平和垂直方向上的移动增量。

【处理浏览器的兼容性问题】

正如你所看到的,两种浏览器在 DOM 上的运用也有很多不同之处,这样就给你在网页中实现 动态 HTML 效果带来了挑战,所以在编写代码的时候应该尽量避免使用不兼容的属性、方法等。

当然,你也可以只设计谋一种浏览器的代码,例如只设计 IE 浏览器可执行的代码,而不考虑 Netscape,但是这样你就将会失去 Netscape 的用户群。或者你也可以设计多套网页或网站,让它们分别支持各种浏览器,但是这样将会给维护网页或网站带来很大的麻烦,增加复杂性。

javascript教程 - 第六部分 在线资源


在线参考

Netscape DevEdge Online  http://developer.netscape.com/docs/manuals/index.html

Microsoft Scripting Technologies  http://msdn.microsoft.com/scripting/

Site Builder Network Workshop  http://www.microsoft.com/workshop/default.asp

实用示例

Developer.com  http://www.developer.com/
javascripts.com  http://www.javascripts.com/
The Web Developer's Virtual Library  http://www.stars.com/
Script Search  http://www.scriptsearch.com/
WebReference.com  http://www.webreference.com/

JavaScript | 【高级】黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程 阅读详情

相关推荐

最详细的JavaScript教程(高级篇),深入学习JavaScript

JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能,用于为HTML网页增加动态功能,被广泛应用于Web应用开发中,为用户提供更流畅美观的浏览效果和体验。 课程介绍 本套课程是JavaScript的进阶课程,适用于已经学习了JavaScript基础知识的同学,如果你想继续对JavaScript的面向对象以及高级应用进行深入地.

Java___interview的博客 2494

JavaScript教程 - 第五部分 高级话题

[正文]在这一章中,我们将大致的学习一下一些 JavaScript 中比较高级的话题,在此我们只是通过一些例子大致学习,而不进行深入探讨。 创建你自己的对象 正如您所看到的,JavaScript 提供了很多网页组件和数据的对象及对象类型。但是,您的目光不能仅仅限于这些,您可以根据自己的需要创建自己的对象、属性和方法,这是很有用的,比如说您需要一个比较复杂的数据结构的时候,您就需要这

落叶飘香 542

Next.js 独立开发教程(十):部分预渲染

在构建现代 Web 应用程序时,性能优化和用户体验提升是开发者关注的核心目标。部分预渲染(Partial Prerendering)是 Next.js 提供的一种强大功能,可以结合静态生成(Static Generation, SSG)和动态渲染(Server-Side Rendering, SSR),让开发者在灵活性和性能之间找到最佳平衡。它尤其适用于那些页面结构相对固定、但部分内容需要动态更新的场景。

二进制的梦想 1361

【原生JS】JavaScript 教程教案

摘要: 老曹的 JavaScript 教程教案 提供从基础到进阶的 20 节系统性课程,涵盖语法、DOM 操作、异步编程、ES6+ 新特性等核心内容。课程分为 基础篇(变量、函数、数组、DOM)和 高级篇(闭包、原型链、Promise、模块化),结合实战项目(如待办清单、天气应用)巩固技能。推荐配套书籍《Eloquent JavaScript》和 MDN 文档,并介绍现代工具链(VSCode、Webpack)。适合零基础入门或开发者进阶,最终目标为掌握全栈 JavaScript 开发能力

silverclayz的技术分享 2455

JavaScript强化教程——Native.js示例汇总

本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 —— Native.js示例汇总   Native.js虽然强大和开放,但很多web开发者因为不熟悉原生API而难以独立完成。 这篇帖子的目的就是汇总各种写好的NJS代码,方便web开发者。 众人拾柴火焰高,有能力的开发者多多提交NJS代码,大家都会给你点赞的, Android平台 在桌面创建和

zhanyingguo的博客 2664

three.js基础到高级应用的全面教程

three.js 是一个轻量级的、易于使用的3D库,允许开发者在浏览器中创造出令人惊叹的3D场景和动画。它为WebGL提供了一个抽象层,从而使得开发者无需深入复杂的WebGL编程,也能够创建3D图形。在three.js中,纹理是将图像映射到3D模型表面的过程,这不仅增加了模型的视觉复杂性,而且是实现逼真渲染的关键手段。常见的纹理类型包括颜色纹理、法线纹理、凹凸纹理等。颜色纹理:提供了模型的颜色和贴图,是最基本的纹理类型。法线纹理。

weixin_42400643的博客 1400

JS高级部分笔记(尚硅谷教程)

JS高级部分0.JS高级思维导图1.基础深入总结0.思维导图1.数据类型1.分类1. 基本类型2. 引用类型2.判断1. typeof(返回数据类型的字符串表达)2. instanceof(判断对象的具体类型是否属于XXX)3. ===3.相关问题1.undefined和null的区别?2. 什么时候给变量赋值为null?3. 严格区别变量类型与数据类型?2. 数据,变量和内存1. 什么是数据2. 什么是内存3. 什么是变量4. 三者之间的关系5.相关问题1.关于赋值与内存的问题?2.关于引用变量赋值问题?

darabiuz的博客 2481

SDI-12协议与STM32 进行uart通信

其中DIR_OUT_SDI是一个IO引脚,控制UART_TX_SDI是否使能,U10是三态门IC,即拉低DIR_OUT_SDI使能stm32输出,拉高DIR_OUT_SDI失能输出,串口配置8位数据位,偶校验,1位停止位,1200波特率。示波器测试得到传感器的应答信号如下:第一个是唤醒信号,拉高电平13毫秒,之后保持20毫秒低电平,第二个数据帧是激活信号,即ascii码: "0!",第三个是传感器的应答信号:"0\r\n"

weixin_42186805的博客 4404

JS高级部分

JS高级部分判断对象引用类型undefined与null的探究区分变量类型和数据类型数据,变量和内存js的函数参数传递为值传递JS引擎如何管理内存JS对象什么时候需要使用['属性名'],什么时候需要使用.JS函数对象call和apply的区别回调函数立即执行函数JS函数中的this指向JS分号问题函数的原型对象显示原型与隐式原型原型链原型链的属性问题instanceOf是如何判断的原型对象和原型链吐血大总结 判断 instanceof是用来区分对象的具体类型,因为所有对象都属于Object类型 ty

m0_53157173的博客 1366

从Starlink看NTN:SSB波束数量少,用户体验真的会差吗?

当SpaceX的Starlink以每月新增上百颗卫星的速度扩张其星座时,一个有趣的技术现象正在引发行业讨论:为何这个全球最大的低轨卫星网络选择使用相对较少的波束数量?波束数量的选择远非简单的技术参数,而是系统设计哲学、商业策略与终端用户体验的复杂平衡。传统地面网络可以依赖密集基站实现精准覆盖,而卫星通信必须面对一个根本性挑战:如何在数百公里的高空,用有限的射频资源服务广阔的地理区域。当我们在撒哈拉沙漠测试不同波束方案时,发现了一个关键洞见:最佳波束数量不是固定的技术参数,而是随网络发展阶段变化的动态值。

weixin_32308101的博客 334

深入解析时钟同步技术:相位同步、频率同步与同源时钟的实战应用

本文深入解析时钟同步技术的三种核心方式:相位同步、频率同步与同源时钟,详细阐述其技术原理、实现方案及实战应用。通过对比分析不同同步方式的特点与适用场景,为电子系统设计提供选型指南,帮助工程师优化时钟网络设计,提升系统稳定性和性能。

weixin_29240711的博客 450

黑马JS教程笔记(JavaScript教程)——JS基础

<head><title>JavaScript练习</title></head><body><script></script></body>

Dontla的博客 2661

不藏了!Wireshark 命令、捕获、过滤器大全分享给你

Wireshark,这款广受欢迎的开源网络协议分析工具,堪称网络管理员、网络安全专家和网络爱好者的“显微镜”!它可以帮助我们捕获网络中的数据包,并提供详细的解码和分析能力。本文将为您全面剖析 Wireshark 的强大功能,从基础到高级,让你快速掌握这个神器!💡Wireshark 是一款功能强大的网络协议分析器,最早由 Gerald Combs 于 1998 年开发,经过多年发展,已成为网络诊断和分析的首选工具。

网络技术联盟站 727

现代 JavaScript 教程

https://zh.javascript.info/https://zh.javascript.info/ 现代 JavaScript 教程 以最新的 JavaScript 标准为基准。通过简单但足够详细的内容,为你讲解从基础到高阶的 JavaScript 相关知识。 搜索 最后修改在 18日 一月 2022 购买EPUB/PDF 分享: 5854 ★githubWeChat 和 QQ 目录 课程的核心内容包含 2 部分,涵盖了 JavaScript 编程语言相关知识和浏览器行为。此

allway2的博客 3638

锂电池SOH估计 | 锂电池SOH基础计算与可视化(Python)

锂电池SOH估计 | 锂电池SOH基础计算与可视化(Python)

前程算法屋的博客 900

【GameFramework框架】7-2、GameFramework框架是否“过度设计”?

框架是否过度设计,这个问题其实我被问到很多次了。不仅仅是新手刚接触就觉得“过度设计”的评价,有些熟练的开发者也会有这种感觉。那么,这篇文章就来探究一下,为什么框架会让人感觉“过度设计”,以及框架如何设计,还有,如何让框架适应自己的节奏。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2120

JavaScript高级教程

JavaScript高级教程 箭头函数 箭头函数是匿名函数,一般做为参数传递 //以前的函数格式 let test = function (a,b){ let sum = a + b return sum } // 简写成以下格式 let test = (参数) => {函数体} 可以简记成把function变成了符号=>,然后位置放在了参数的右边 注意点: 如果函数体只有一句,那么可以省略{},同时默认会返回函数体的结果,不能写return 如

weixin_50939386的博客 1862

深入理解SQL注入中的union select 1,2,3....

UNION 用于合并两个查询的结果集

渗透之路,攻防之间皆学问 2万+

第五周总结js高级——闭包

这周已经将js高级部分学完啦,周日就要考核啦。这部分相对于以往的浅显易懂的东西要难上很多,因为它主要讲了js内部运行的一些问题,但了解js高级后我也更加深入地了解了js为何会这样运行,也解开了我以前的未解之谜。 曾经用for循环给每个按钮设置功能时老是遇到这个问题: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</t

qq_63660369的博客 688

【数字孪生与仿真技术】06:航天器系统建模与验证全流程实战:从多学科建模到数字孪生(附完整代码与工业案例)

摘要:航天器系统开发面临多学科耦合强、验证流程复杂、可靠性要求极高的挑战。本文基于MATLAB/Simulink平台,系统阐述航天器从多域建模、动力系统开发到任务验证的全流程技术框架。内容涵盖Modelica统一建模规范、光伏-电池联合供电系统仿真、基于模型的需求追溯方法、蒙特卡洛可靠性分析及硬件在环测试等核心技术,并结合James Webb太空望远镜电力系统案例,展示工业级应用实践。文中提供完整的Simulink模型代码、仿真结果及流程图,最后探讨数字孪生与AI增强技术在航天器在轨运维中的未来应用。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1373

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

javascript高级编程教程,javascript基础入门案例

我是一名地地道道的农民工,生活在经济落后的农村,有一个哥哥和一个弟弟,父母都是地道的农民,日出而作,日落而息,我从小到大学习一直很好,从小学到高一都,成绩在全级一直名列前茅,这样我也顺利了考上省的重点高中,然而,每个学期开学是家里最为难的时候,每次交学费都让父母发愁许久,家里为了给我筹钱读书,都借了不少钱,才让我读上高中。我想我比较幸运,经理看中我的努力,就决定吕勇我,开的工资是3500一个月,虽然我知道在北京3500只能过温饱的生化,但是我想我足够了,比起以前的工资好了些,以后可以多寄些钱回家。

wenangou的博客 384

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Python爬虫JS逆向工程高级教程

本教程深入讲解了Python爬虫中JS逆向工程的核心技术,涵盖AES、RSA、MD5等加密算法的破解方法。主要内容包括:1.浏览器调试技术:使用Chrome开发者工具进行代码分析、断点调试和网络请求捕获;2.加密算法原理:详解对称加密(AES)、非对称加密(RSA)和消息摘要(MD5/SHA)的实现方式;3.实战案例:通过电商订单系统、Canvas指纹系统和WebGL加密系统三个典型案例,演示如何逆向多层加密逻辑。教程从基础概念到高级应用,系统讲解了如何突破网站前端加密限制,实现动态数据的爬取。

ZTLJQ的博客 2551

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

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

JavaScript高级教程一起学

javaScript高级教程 一起学习

大道至简 397

视频教程-通俗易懂的JavaScript高级教程(含资料)-JavaScript

通俗易懂的JavaScript高级教程(含资料) 张长志技术全才、擅长领域:...

weixin_34154691的博客 6216
上一篇: javascript教程 - 第四部分 关于form对象
下一篇: 身份证号验证正则表达式
liusylon
博客等级 码龄23年 3粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值