5. javacript高级程序设计-引用类型】的更多相关文章

1. 引用类型 1.1 Object类型 创建Object类型有两种方式: 使用new操作符后跟Object构造函数 var person =new Object(); 字符量表示法 var person = { name:’chuck’ } 1.2 Array类型 1.2.1 创建方式 使用Array构造函数 var colors = new Array(); 字符量表示法 var colors = []; var names= [‘a’,’b’,’c’]; 1.2.2 检测数组 使用 Arr…
对象在javascript中被称为引用类型的值,而且有一些内置的引用类型可以创建特定的对象: 引用类型与传统面向对象中的程序设计的类相似,但实现不同: Object是一个基础类型,其他所有类型都从Object继承了基本的行为. Array类型是一组值的有序列表,同时还提供了操作和转换这些值的功能. Date类型提供了有关日期和时间的信息,包括对信息相关计算功能. RegExp类型是ECMAScript支持正则表达式的一个接口,提供一些正则表达式的功能. 函数实际上是Fucntion类型的实例,因…
1. 面向对象设计 1.1 理解对象 1.1.1 属性类型 (1). 数据属性:相当于对象的字段,包含一个数据值的位置,在这个位置可以读取和写入值.数据属性中有4个描述其行为的特性: l [[Configurable]]:表示能否通过delete删除属性从而重新定义属性 l [[Enumerable]]:表示是否通过for-in循环返回属性 l [[Writable]]:表示能否修改属性的值 l [[Value]]:包含这个属性的数据值 要修改属性默认的特性,必须使用ECMAScript5的Ob…
1.1 基本类型和引用类型的值 变量包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,引用类型值可以由多个值构成的对象 1.1.1 动态的属性 针对引用对象的值,可以为其动态的添加属性和方法 var person = new Object(); person.name = “chuck”; alert(person.name); // chuck 1.1.2 复制变量值 (1). 基本类型的变量复制 var num = 5; var num2 = num; 复制前:…
1. 新兴的API requestAnimationFrame():是一个着眼于优化js动画的api,能够在动画运行期间发出信号.通过这种机制,浏览器就能够自动优化屏幕重绘操作 Page Visibility API:让开发人员知道用户什么时候正在看着页面,而什么时候页面是隐藏. Geolocation API:在得到用户许可的情况下,可以确定用户的位置 File API:可以读取文件内容,用户显示.处理和上传 Web Timing:给出了页面加载和渲染过程的很多信息,对性能优化非常有价值 We…
1. 最佳实践 l 来自其他语言的代码约定可以用于决定何时进行注释,以及如何进行缩进,不过JavaScript需要针对其松散类型的性质创造一些特殊的约定 l javascript应该定义行为,html应该定义内容,css应该定义外观 l 这些职责上的混乱会导致难以调试的错误和维护上的问题 l javascript执行所花费的事件直接影响到web页面的性能 l DOM交互的开销很大,需要限制DOM操作的次数 l 可以考虑将javascript文件合并为单个文件 l 使用压缩器将文件尽可能变小 l…
1. 数据存储 1.1 cookie HTTP Cookie, cookie,最初用来在客户端存储回话信息. (1). 限制,不同浏览器对特定域名下的cookie 的个数有限制,每个域名下最好不要操过20个cookie (2). cookie的构成 名称:一个唯一确定cookie的名称,不区分大小写,cookiede 名称必须经过URL编码 值:存储在cookie中的字符串值,值必须被URL编码 域:cookie对那个域是有效的,所有向该域发送的请求都会包含该cookie,可以包含子域,没有明确…
1. 高级技巧 1.1 函数 l 可以使用惰性载入函数,将任何分支推迟到第一个调用函数的时候 l 函数绑定可以让你创建始终在指定环境中运行的函数,同时函数柯里化可以让你创建已经填写了某些参数的函数 l 将绑定和柯里化组合起来,可以在任意环境中以任意参数执行函数的方法 1.2 对象 ECMAScript5允许通过以下几种方式来创建防篡改对象 l 不可扩展对象,不允许给对象添加新的属性或者方法 l 密封的对象,也是不可扩展对象,不允许删除已有的属性和方法 l 冻结的对象,也是密封对象,不允许重新对象…
1. Ajax与Comet 1.1 XMLHttpRequest对象 IE5是第一款引入XHR对象的浏览器,IE5中是通过MSXML库中的一个ActiveX对象实现的.因此在IE中可能存在MSXML2.XMLHttp, MSXML2.XMLHttp.3.0, MSXML2.XMLHttp.6.0,要支持旧浏览器,可以使用如下函数: function createXHR(){ if(typeof XMLHttpRequest != 'undefined'){ return new XMLHttpR…
1. JSON JSON是一种数据格式,存在以下三种类型的值: l 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串.数值.布尔值和null,不支持 undefined,例如:5,’hello world’ l 对象:对象作为一种复杂数据类型,表示一组无须的键值对,例如: { ‘name’:’cc’, ‘age’:20 } l 数组:数据是一种复杂的数据类型,表示一组有序的列表,例如: [12,’cc’,34] ECMAScript 5对JSON的行为进行规范,支持这个对…
1. E4X E4X是对ECMAScript的一个扩展, l 与DOM不同,E4X只用一个类型节点来表示XML中的各个节点 l XML对象中封装了对所有节点都有用的数据和行为.为了表示多个节点的集合,这个规范定义了XMList l 另外两个类型,Namespace和QName,分别表现命名空间和限定名…
1. JavaScript与XML IE采取了下列方式: l 通过ActiveX对象来支持处理XML,而相同的对象也可以用来构建桌面应用程序 l Windows携带了MSXML库,JavaScript能够访问这个库 l 这个库包含对基本XML解析和序列化的支持,同时也支持XPath和XSLT等技术 firefox为处理XML的解析和序列化,实现了两个新类型, l DOMParser类型比较简单,其对象可以将XML字符串解析为DOM文档 l XMLSerializer类型执行相反的操作,即将DOM…
1. 错误处理与调试 l 在可能发生错误的地方使用try-catch方法,可以对错误进行及时的相应 l 使用window.onerror事件处理程序,这种方式可以接受try-catch不能处理的所有错误 l javascript中发生错误的主要原因如下: 类型转化 未充分检测数据类型 发送给服务器或者从服务器接收到的数据有错误 2. JavaScript与XML…
1. HTML5脚本编程 l 跨文档消息传递API能够让我们在不降低同源策略安全性的前提下,在来至不同的域的文档间传递消息 l 原生拖放功能可以方便的指定某个元素是否可以拖动,并在放置时做出响应.还可以创建自定义的可拖放元素及放置目标 l 新的媒体元素<audio>和<video>可以拥有自己的与视频和音频交互的API l 历史状态管理让我们不必卸载当前页面即可以修改浏览器的历史状态栈.…
1. Canvas绘图 HTML5的<canvas>元素提供了一组JavaScript API,让我们可以动态的创建图形和图像.图形是在一个特定的上下文中创建的,而上下文对象目前有两种. 第一种是2D上下文,可以执行原始的绘图操作, l 设置填充.描边颜色和模式 l 绘制矩形 l 绘制路径 l 绘制文本 l 创建渐变和模式 第二种是3D上下文,即WebGL上下文. l 使用GLSL编写的顶点和片段着色器 l 支持类型化数组,即能够将数组中的数据限定为某种特定的数值类型 l 创建和操作纹理 主流…
1. 表单脚本 1.1 基础知识 <from>元素表示表单: l acceptCharset:服务器能处理的字符集 l action:接受请求的URL l elements:表单中所有控件的集合 l enctype:请求的编码类型 l length:表单中控件的数量 l method:要发送的HTTP请求类型,通常是get或者post l name:表单的名称 l reset():将所有的表单重置为默认值 l submit():提交表单 l target:用于发送和接受请求响应的窗口名称 1.…
1. 事件 1.1 事件流 事件流描述的是从页面中接受事件的顺序,IE的事件是冒泡流,而Netscape Communicator的事件流是事件捕捉流. 1.1.1 事件冒泡 <!DOCTYPE html> <html> <title>xxx</title> <body> <div id="myDiv">click me</div> </body> </html> 如果你点击了页…
1. DOM2和DOM3 DOM2级规范定义了一些模块,用于增强DOM1级.“DOM2级核心”为不同的DOM类型引入了一些与XML命名空间有关的方法,这些变化只在使用XML或者XHTML,对于HTML文档没有实际意义.除了与XML命名空间有关方法外,“DOM2核心”还定义了以编程方式创建Document实例的方法,也支持了创建DocumentType对象. “DOM2级样式”模块主要针对操作元素的样式信息而开发,其简要特性总结如下: l 每个元素都有一个关联的style样式,可以用来确定和修改行…
1. DOM扩展 1.1 选择符API l querySelector() 接收一个css选择符,返回与该模式匹配的第一个元素 l querySelectorAll() 接收一个css选择符,返回所有匹配的NodeList元素 1.2 HTML5 1.2.1 与类相关的扩充 l getElementsByClassName() 接收一个参数,一个包含一或者多个类名的字符串,返回带有指定类的所有元素的NodeList l classList属性,add(value),contains(value)…
1. DOM DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口) 1.1 节点层次 DOM可以将任何HTML和XML文档描绘成一个由多层节点构成的结构.节点分为几种不同的类型,每种类型分别表示文档中不同的信息及标记. 1.1.1 Node类型 DOM1中定义了一个Node接口,该接口由DOM中所有的节点类型实现,这个Node接口在JavaScript中作为Node类型实现. 每个节点都有一个nodeType属性,因此所有节点类型都共享着相同的基本属性和方法 每个节点都有…
1. 客户端检测 1.1 能力检测 在编写代码之前先检测特定浏览器的能力. 1.2 怪癖检测 怪癖实际上是浏览器实现中的bug 1.3 用户代理检测 通过检测用户代理字符串来识别浏览器.用户代理字符串中包含大量与浏览器有关的信息,包括浏览器.平台.操作系统及浏览器版本.…
1. BOM 1.1 window BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象有双重身份, 1.1.1 全局作用域 由于window对象同时扮演着ECMAScript中Global对象的角色,因此所有在全局作用域中声明的变量.函数都会变成window对象的属性和方法. 1.1.2 窗口关系及框架 如果页面中包含框架,则每个框架都拥有自己的window对象,并且保存在frames集合中.在frames集合中,可以通过数值索引(从0开始,从左至右,从上到下)…
1. 函数表达式 1.1 函数定义 函数定义的方式有两种:一种是函数声明,另一种就是函数表达式. (1). 函数声明:函数声明的重要特征就是函数声明提示,函数声明会在函数执行前执行 function functionName(arg0,arg1,arh2){ //函数体 } (2). 函数表达式 var functionName = function (arg0,arg1,arh2){ //函数体 } 1.2 递归 递归函数是在一个函数通过名字调用自身的情况下构成的,例如: function f…
1.1 语法 ECMAScript借鉴了C和其他类C语言的语法 1.1.1 区分大小写 ECMAScript中的一切(变量,函数和操作符)都是区分大小写的,变量test和Test是不同的变量 1.1.2 标识符 标识符,就是指变量,函数和属性的名字,或者函数的参数.标识符可以是按照以下格式规则组合起来的一或多个字符 (1). 第一个字符必须是一个字母,下划线或者一个美元符号 (2). 其他字符可以是字母.下划线.美元符号或数字 标识符中的字母也可以包含扩展的ASCII或者Unicode字母字符…
1.1 <script>元素 向HTML页面中插入JavaScript的主要方法,就是使用<script>元素,<script>元素定义了一下6个元素: (1). async:可选,表示立即下载脚本,只对外部脚本文件有效 (2). charset:可选,表示通过src属性指定的代码的字符集 (3). defer:可选,表示脚本可以延迟到文档完全被解析和显示之后再执行,只对外部脚本文件有效 (4). language:已废弃,原来用于表示编写代码使用的脚本语言 (5).…
JavaScript诞生于1995年,由Netscape公司布兰登·艾奇开发,JavaScript主要包括三个部分: (1). ECMAScript,由ECMA-262定义,提高核心语言功能 (2). 文档对象模型(DOM),提供访问和操作网页内容的方法和接口 (3). 浏览器对象模型(BOM),提供与浏览器交互的方法和接口…
ES3方法集合: 1join()方法,将一个数组里面的所有元素转换成字符串,然后再将他们连接起来返回一个字符串,通过制定的符号,默认值为逗号.不会改变原数组 ,,,,]; a.join(); "1,2,3,4,5" typeof (a.join()); "string" typeof a "object" 2reverse()方法对数组顺序进行反转,会改变原本的数组. ,,,,]; a.reverse(); [, , , , ] a [, , ,…
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,通常也被称为类,有时候也被成为对象定义,因为他们描述的是一类对象所具有的属性和方法.对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数来创建的, var person = new Object() ; 创建了一个object对象.构造函数…
在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如ajax传参,有时我不仅仅只是需要一个参数,例如添加方法,传的是一个对象,对象存在属性.在java中对象也可以说类.因为类存在属性,例如人类,他的属性有身高,体重,姓名,年龄,性别等.而js对象,也可以这样,比如车,它可以有品牌,颜色,造型等等. js对象可以做什么呢?同java对象有什么区别呢? 第一…
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)>,突然想着边看边记录,就像边看边写读后感.这本书从介绍表达式和申明变量开始,平滑的过渡到了闭包.面向对象开发等高级主题.与那些把大量篇幅花在讲解背景知识上的书,以及那些让人感觉好像要使用JavaScript 开发导弹制导系统的书,这本书让人感觉细致周到.亲切自然,这是一本写给“普通人”的书.它能够让你编写…