js高级程序设计第4电子版(js高级程序设计 第4版和第三版)

  • 1、《js高级程序设计》中组合继承(P169)部分例子中的,SubType.prototype.constructor = SubType;的作用
  • 2、《JavaScript高级程序设计》什么时候出版
  • 3、求javascript 中文参考手册
  • 4、javascript频繁创建销毁对象会不会给浏览器造成负担
  • 5、es是js的规格吗?
  • 6、求《JavaScriptDOM高级程序设计》全文免费下载百度网盘资源,谢谢~

这个是为了让subType的构造函数重新指回这个类本身,否则的话它会变成之前继承的那个类的构造函数。

在后面再调用的时候可能会出现意想不到的情况

第一版,2006年《JavaScript高级程序设计》人民邮电出版社出版;

第二版,2010年人民邮电出版社出版;

第三版, 2012-3-29人民邮电出版社出版;

第四版,亚马逊预售 18年 1月份吧 第4版出版;

而《JavaScript权威指南》应该出到了第七版,我buy的是第六版。

这是我收藏最久,用得最多的下载电脑资料的网站,的确是太好了。呵。这上面全是书籍,并且可以下载的。

如果你想要视频。可以点上面的“视频教学”。

希望我的推荐对你有帮助哦。呵。。

问题不大,

销毁不掉问题才大,

我以前做过一个项目,每一步每一个按钮都是Ajax性能什么的倒是没发现什么问题全看网速,但是,问题出在:在IE下(其他浏览器没测),每次刷新都会增加几十M内存的占用,多刷新几次内存就提示“虚拟内存不足”什么的,只能关闭浏览器了。就是js对象都没销毁掉。

楼上抄了一段书,我也把我看的发出来吧:

(好多字,没办法,对付看吧,我已经精简过了)

(一般用2种方式:标记清除,引用计数)

以下内容来自《javascript高级程序设计(第二版)》

4.3垃圾收集器:

垃圾收集机制的原理其实很简单:找出那些不再继续使用的变量,然后释放其内存。

4.3.1标记清除:

javascript中最常用的垃圾收集方式是“标记清除”(mark-and-sweep)。当变量进入环境(例如,在函数中声明一个变量)时,就将这个变量标记为“进入环境”。

……

当变量离开环境时。则将其标记为“离开环境”。

垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记。然后,它会去掉环境中的变量以及被环境中的变量引用的变量的标记。而在此之后仍然带有标记的变量将被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了。最后垃圾收集器完成“内存清理”工作,销毁那些标记的值并回收他们所占用的内存空间。

4.3.2引用计数:

另一种不太常见的垃圾收集策略叫做“引用计数”(reference counting)。引用计数的含义是跟踪记录每个值被引用的次数。当声明一个变量并将一个引用类型值赋给该变量时,则这个值的引用次数就是1。如果同一个值又被赋给另一个变量,则该引用次数加1。相反,如果包含对这个值引用的变量又取得了另外一个值,则这个值的引用次数减1.当这个值的引用次数变成0时,则说明没办法再访问这个值了,因此回收它。

Netscape Navigator 3.0 是最早使用引用计数策略的浏览器,但很快它就遇到了一个严重的问题:循环引用。

function problem(){

var objectA = new Object();

var objectB = new Object();

objectA.someOtherObject = objectB;

objectB.anotherObject = objectA;

}

两种引用的次数都是2。

为此:Netscape在 Navigator 4.0中放弃了引用计数方式,转而采用标记清除来实现垃圾回收。

IE中有一部分并不是原生javascript对象。例如,其BOM和DOM中的对象就是使用C++以COM(Component Object Model,组建对象模型)对象的形式实现的,而COM对象的垃圾收集机制采用的就是引用计数策略。因此,即使IE的javascript引擎是使用标记清除策略来实现的,但javascript访问的COM对象依然是基于引用计数策略的。

……

var element = document.getElementById(‘some_element’);

var myObject = new Object();

myObject.element = element;

element.someObject = myObject;

……

为了避免类似这样的循环引用问题,最好是在不使用它们的时候手工断开原生javascript对象与DOM元素之间的链接。例如,

myObject.element = null;

element.someObject = null;

将变量设置为null意味着切断变量与它此前引用的值之间的链接。当垃圾收集器下次运行时就会删除这些值并回收它们占用的内存。

4.3.3性能问题:

垃圾收集器是周期运行的,而且如果为变量分配的内存数量很客观,那么回收工作量也是相当大的。

……

IE的垃圾收集器是根据内存分配量运行的,具体一点说就是256个变量、4096个对象(或数组)字面量和数组元素(slot)或者64KB的字符串。达到上述任何一个临界值,垃圾收集器就会运行。如果一个脚本中包含那么多变量,那么该脚本可能会在其生命周期中一直保有那么多变量。而这样一来,垃圾收集器就不得不频繁第运行。结果,由此引发的严重性能问题促使IE7重写了其垃圾收集器例程(临界值动态修改,一次回收中如果回收的内存小于15%,临界值就翻倍、如果回收大于85%,临界值就重置为默认值)。

4.3.4管理内存:

确保占用最少的内存可以让页面获得更好的性能。而优化内存占用的最佳方式,就是为执行中的代码只保存必要的数据。一旦数据不在有用,最好通过将其值设置为null来释放其引用——这个做法叫做“解除引用”(dereferencing)

……

不过,解除一个值的引用并不意味着自动回收该值所占用的内存。解除引用的真正作用是让值脱离执行环境,以便垃圾收集器下次运行时将其回收。

准确的说:es(ECMAScript)是js(javascript)的标准。

JavaScript是语言,而ECMAScript(即ECMA-262,ECMA是欧洲计算机制造商协会)是为了规范JS而制定的标准,ECMAScript有不同版本,最近的版本是第10版,发布于2019.6。

完整的JavaScript的实现包含以下几个部分:

核心(ECMAScript):由ECMA-262定义并提供核心功能。

文档对象模型(DOM):提供与网页内容交互的方法与接口。

浏览器对象模型(BOM):提供与浏览器交互的方法与接口。

可以用下面这张图进行粗略的记忆

具体来说,ECMA-262定义了一门语言的如下部分

语法

类型

语句

关键字

保留字

操作符

全局对象

ECMA-262第6版,俗称ES6、ES2015或ES Harmony(和谐版),于2015年6月发布。这一版包含了大概这个规范有史以来最重要的一批增强特性。ES6正式支持了类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型。

DOM Level 1 在1998.10成为W3C的推荐标准。它由DOM Core 和DOM HTML两个部分组成。DOM Core提供了一种映射XML文档,从而方便访问和操作文档任意部分的方式;DOM HTML扩展了前者,并增加了特定于HTML的对象和方法。

DOM Level 2  新增了以下模块,以支持新的接口。

DOM视图:描述追踪文档不同视图(如应用CSS样式前后的文档)的接口。

DOM事件:描述事件及事件处理的接口。

DOM样式:描述处理元素CSS样式的接口。

DOM遍历和范围:描述遍历和操作DOM树的接口。

DOM Level 3 增加了以统一的方式加载和保存文档的方法(包含在一个叫DOM Load and Save的新模块中),还有验证文档的方法(DOM Validation)。

DOM Level 4 新增Mutation Observers,替代 了Mutation Events .

BOM 主要针对浏览器窗口和子窗口(frame),不过人们通常会把任何特定于浏览器的扩展都归在 BOM 的范畴内。 下面就是这样一些扩展。

弹出新浏览器窗口的能力;

移动、缩放和关闭浏览器窗口的能力;

navigator对象,提供关于浏览器的详尽信息;

location对象,提供浏览器加载页面的详尽信息;

screen对象,提供关于用户屏幕分辨率的详尽信息;

performance对象,提供浏览器内存占用、导航行为和时间统计的详尽信息;

对cookie的支持;

其他自定义对象,如XMLHttpRequest和IE的ActiveXObject。

出处:《JavaScript高级程序设计(第4版)》Matt Frisbie著 李松峰译

《JavaScript DOM高级程序设计》百度网盘pdf最新全集下载:

链接:

?pwd=5kvs 提取码:5kvs

简介:JavaScript DOM高级程序设计注重理论与实践的结合,全面讲述高级的DOM脚本编程。全书分为3个部分每部分的 后一章都为案例研究,将学到的内容应用于实践。通过学习全书内容,读者将能构建起属于自己的DOM实用方法库。本书适合有Web开发和设计经验的读者阅读和参考。

原创文章,作者:LYXTV,如若转载,请注明出处:https://www.506064.com/n/126426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
LYXTVLYXTV
上一篇 2024-10-03 23:08
下一篇 2024-10-03 23:08

相关推荐

  • Python基础教程第三版PDF下载

    熟练掌握Python编程语言可以让你轻松地用代码解决很多问题,Python基础教程第三版是一本适合初学者的Python教程。本文将从几个方面详细介绍Python基础教程第三版PDF…

    编程 2025-04-29
  • Python计算机语言程序设计用法介绍

    Python是一种高级编程语言,其设计目的是让程序员能够在编写代码时更加关注算法的设计,而不必过多地考虑语言细节。Python被广泛应用于网站开发、数据科学、人工智能、机器学习等各…

    编程 2025-04-28
  • Python元祖排序:从基础知识到高级应用

    Python元祖是一种不可变序列,通常用于将一组数据绑定在一起。元祖之间经常需要排序,本文将从基础知识到高级应用,为你详细讲解Python元祖排序。 一、排序方法 Python提供…

    编程 2025-04-28
  • 使用面向对象程序设计方法改写猜数字游戏Python程序

    本文将从以下多个方面对猜数字游戏程序功能要求,使用面向对象程序设计方法改写该程序Python做详细的阐述。 一、游戏规则 1、游戏开始时,程序随机生成一个 1 到 100 之间的整…

    编程 2025-04-28
  • Isodata算法算高级算法吗?

    是的,Isodata算法算得上是一种高级算法。 一、Isodata算法的定义 Isodata算法是一种基于聚类的图像分割算法,广泛应用于图像处理领域。 该算法首先对图像进行预处理,…

    编程 2025-04-27
  • 汇率兑换程序和温度转换程序设计

    这篇文章将从多个方面详细阐述如何设计汇率兑换程序和温度转换程序。这些程序可以帮助人们更方便地计算货币汇率和温度转换,对于需要频繁出差或者经常进行气象预报的人来说,这些程序将非常有用…

    编程 2025-04-27
  • Python高级用法:re.split函数双空格

    本文将详细介绍Python中re模块中的split函数双空格的用法及其应用场景。 一、split函数双空格概述 re.split() 是 Python re(正则表达式) 模块中的…

    编程 2025-04-27
  • Python程序设计题库博客园

    Python程序设计题库博客园是一个开发者可以通过该平台进行学习和检测自身能力的编程题目练习平台。其提供了一些Python的基础编程技能练习,对于想要学习Python编程,提高编程…

    编程 2025-04-27
  • CCF中学生计算机程序设计全面解析

    CCF(中国计算机学会)中学生计算机程序设计是一个旨在培养中学生计算思维和编程能力的活动。自2000年开始,每年举办一次,分为入门篇、基础篇、提高篇、专业篇四个阶段,以及最新版和答…

    编程 2025-04-23
  • Javascript高级程序设计PDF的探讨

    一、Javascript语言基础 Javascript作为一门编程语言,具有独特的特点和语法结构。在学习Javascript时,我们需要掌握它的语言基础,如变量、数据类型、运算符等…

    编程 2025-04-12

发表回复

登录后才能评论