自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (14)
  • 收藏
  • 关注

转载 nodejs-异步I/O

为什么要异步I/O 在跨网络结构下,I/O具体到实处可以从用户体验和资源分配两方面说起。用户体验采用异步请求,在下载资源期间,JavaScript和UI的执行都不会处于等待状态,可以继续响应用户的交互行为。同步与异步时间消耗对比,前者时间为M+N,后者为max(M+N)同步代码如下:// 消耗时间为MgetData('from_db');// 消耗时间为NgetData('from_r

2015-12-25 09:55:44 1435

翻译 HTTP 2.0 协议详解

HTTP 2.0 协议详解一、HTTP 2.0:改进传输性能 HTTP 2.0 的主要目标是改进传输性能,实现低延迟和高吞吐量。从另一方面看,HTTP 的高层协议语义并不会因为这次版本升级而受影响。所有HTTP 首部、值,以及它们的使用场景都不会变。现有的任何网站和应用,无需做任何修改都可以在HTTP 2.0 上跑起来。不用为了利用HTTP 2.0 的好处而修改标记。HTTP 服务器必须运行H

2015-12-04 20:25:52 38455

原创 TCP(传输控制协议)

TCP(传输控制协议) 传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。 在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。一、TCP/IP协议族 TCP/IP(TCP/IP Protocol Suit

2015-11-17 21:43:15 3886 1

原创 下一代javascript

javascript-future下一代javascript同步。异步!协作程?同步与异步(同步编码代码量小(简单),符合人类理解方式(好写))同步XHR示例代码: var xhr = new XMLHttpRequest(); xhr.open('get', '/', false); try { xhr.send(); } catch (e) {

2015-11-09 22:50:27 725

原创 SPDY协议

SPDY接入服务概述 SPDY是Google开发的下一代网络协议,它并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%,并且应用到Gmail中,目前业界支持SPDY的服务器有Netty和Nginx。SPDY增加了一个帧层用于多路复用,多个并发流通过一个TCP连接(或者其他可靠传输流)。这个帧层为类似HTTP的请求响应

2015-11-08 14:12:04 5643 1

原创 保护HTTP的安全

security-http1、保护HTTP的安全需要提供下列功能的HTTP安全技术:1、服务器认证(客户端感知是与可信任的服务端通信)2、客户端认证(服务端感知是与可新人的客户端通信)3、完整性(客户端和服务器的数据不可被篡改)4、加密(客户端和服务端通信不被窃取)5、效率(运行效率快的算法,支持低端客户端和服务端使用)6、普适性(支持所有客户端和服务器通信协议)7、适应性(能够支持目前最知名的安

2015-11-01 18:33:20 1770

原创 移动端页面性能探究

一、背景:          智能终端的普及改变了人们对互联网的使用习惯,终端环境对页面性能有更高的要求,接下来以一张图来分析:1s内渲染一个移动页面网络整体消耗来分析:     1、服务器响应应该小于200ms     2、尽量少的重定向     3、尽量少的第一次渲染的请求     4、避免过多堵塞的js和css堵塞j

2015-04-06 22:07:48 2939 1

原创 前端能力模型-动画类型及动画库的介绍

一、背景:     合适的动画不仅更能吸引人们的眼球,也能让你的应用体验更为流畅,而将动画的效果做到极致,才能让用户感到使用你的应用是一种享受,而不是觉得生硬和枯燥。二、动画技术分类:     按技术类型来进行分类,分为三类:JS动画,CSS3动画,html5动画,接下来分别对三类动画进行讲解。     1)JS动画     通过一个定时器setInte

2015-04-06 17:50:03 4674

翻译 前端能力模型-V8 JS引擎

一、webkit内核与V8在chrome浏览器中,用webkit来进行html渲染,用v8作为js引擎。     虽说Chrome和Webkit都是开源的,但是Chrome始终保持和Webkit距离,Chrome在WebKit上封装了一层称为WebKit Glue。Glue层中,大部分类型的结构和接口都和WebKit类似,Chrome中依托WebKit组件,都只是调用Webkit

2015-04-05 17:40:28 3630

原创 前端能力模型-负载均衡各种方式

负载均衡有以下几种方式:一、基于客户端方式:     每个客户程序都具有一定的服务器集群的知识,进而把以负载均衡的方式将请求发到不同的服务器。这种方式比较原始,现在一些老系统还在使用这种方式,客户端简单的使用轮询实现负载均衡。这种方式的可靠性,可维护性都很低,加重客户端开发的难度。     结构图如下:二、基于DNS(DNS服务器)

2015-03-28 18:12:07 2810

转载 websocket-php

下面先用一个图例来演示clinet和server之间建立websocket连接时握手部分,这个部分在nodejs中可以十分轻松的完成,因为node提供的net模块已经对socket套接字做了封装处理,开发者使用的时候只需要考虑数据的交互而不用处理连接的建立。而php没有,从socket的连接、建立、绑定、监听等,这些都需要自己去操作,如下1和2实际上就是一个HTTP

2015-03-18 09:33:18 1324

原创 SHA1算法

密码加密简介:密码存储的主要形式:     明文存储:肉眼就可以识别,没有任何安全性。     加密存储:通过一定的变换形式,使得密码原文不易被识破。密码加密的几类方式:     明文转码加密:BASE64, 7BIT等,这种方式只是个障眼法,不是真正的加密。     对称算法加密:DES,RSA等。     签名算法加密:也可以理解为单向哈希加密,比如MD5,SHA1

2015-03-15 11:48:22 4252 2

转载 OSI7层模型与TCP/IP协议栈4层

osi(Open System Interconnection Reference Model)osi7层模型,分别是第7层 应用层(Application Layer)提供为应用软件而设的界面,以设置与另一应用软件之间的通信。例如:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。第6层 表示层(Presentation Layer

2015-03-14 20:54:17 4911

转载 前端能力模型-CSRF漏洞

一、CSRF概念:     CSRF(Cross-Site Request Forgery):中文名称:跨站请求伪造,也被称为:one click attack/ session riding,缩写为CSRF/XSRF。XSS是实现CSRF的诸多途径中的一条,但绝对不是唯一的一条。一般习惯上把通过XSS来实现的CSRF称为XSRF。CSRF是伪造请求,,冒充用户在站点正

2015-03-11 22:02:11 1152

转载 前端能力模型-数据结构-栈

一、栈的基本定义1、栈是一种特殊的线性表,只能从固定的方向进出,而且栈进出的基本原则是:先进栈的元素后出栈。2、栈顶栈底的定义:栈顶:允许操作的一端。栈底:不允许操作的一端。二、栈的基本实现方式1、使用顺序存储的方式实现栈在这种方式下,我们采用顺序表的复用方法来实现栈的数据存储。2、使用链式存储来实现栈

2015-03-07 21:44:54 981

转载 https协议文件加密

SSL(https)中的对称加密与非对称加密在网站通过SSL来与用户建立安全的通信中,对称加密算法和非对称加密算法起到了很大作用。密码学最早追溯到古希腊,那时加密方法:替换字母。早期密码学1、scytale工具加密:把羊皮纸卷在圆木上,写下信息,羊皮纸展开后,这些信息就加密。2、Caesar's cipher位移字母加密方法,如:AES加密后为XBP

2015-03-01 16:45:45 1052

原创 http协议文件压缩

一、HTTP协议头:服务端根据客户端发送的请求头中某些字段自动发送最合适的版本。可以用于这个机制的请求头字段分为两种:Accept字段、其他字段。请求头字段说明响应头字段Accept-Encoding告知服务器采用何种压缩方式Content-Encoding比如客户端发送的请求头:Accep

2015-02-28 14:47:38 3044

原创 前端跨域杂谈

前端跨域之post方式

2015-02-25 21:22:07 937

原创 requireJS源码分析

RequireJS是一款遵循AMD规范协议的JavaScript模拟加载器。业界常见模块加载器(labjs、requirejs、seajs)LABjs的核心是LAB(Loading and Blocking):核心价值是性能优化

2015-02-01 20:16:14 6459

原创 Zepto源码分析之二~三个API

由于时间关系:本次只对这三个API($.camelCase、$.contains、$.each)方法进行分析第一个方法变量转驼峰:$.camelCase('hello-world-welcome');源码:var camelize;/** * 字符串替换 * 使用replace第二个参数带回调 */camelize = function(str) { 

2014-11-02 17:49:10 1709

原创 Zepto源码分析一~核心方法

今天抽空复习了一下Zepto的源码,按照自己的理解进行注释。欢迎大家拍砖。源码版本:v1.1.4源码下载地址:http://zeptojs.com/分析整体代码之后,整理出架构图:本次只针对获取核心方法$()进行拨离,并用demo测试api。var Zepto = (function() { // 变量初始化 var $;

2014-10-12 21:47:29 3100

原创 seajs构建web应用

随着开发项目不断膨胀,发现代码依赖关系变得复杂,维护比较蛋疼,想起seajs有这方面之功效,果断尝鲜,用来解决两个问题:1)命名冲突 2)文件依赖关系由于所在BG使用TAF服务,基于C++开发一套WSP web服务框架。下面所讲的都是基于该框架下测试验证。分成三个阶段:开发->改进->构建第一阶段:开发模板目录结构:--wsp      --

2014-09-29 21:40:36 2023

原创 Grunt实现自动化单元测试

直奔主题:一、安装grunt-contrib-qunitnpm install grunt-contrib-qunit --save-dev (前提先安装nodejs和npm)自动下载grunt-lib-phantomjs库,安装phantomJSphantomjs实现了一个无界面的webkit浏览器。虽然没有界面,但dom渲染、js运行、网络访问、canvas/s

2014-09-27 11:38:09 3479

原创 grunt模块化配置

一、简介     构建工具的作用:          在项目部署上线前,通常要将源文件压缩,合并,并拷贝到bch或trunk中。     在将js模块化后,又多了一个分析,提取业务代码中所依赖模块的工作。     解决这一系列繁重工作的自动化工具,称之为构建工具。          任务流程:          task:clean

2014-08-29 09:32:55 3790

翻译 JavaScript使用正则表达式

2.0 简介正则表达式是可以用来查找与给定模式匹配的文本的搜索模式。例如,在上一章中,我们在一个较长的字符串中查找子字符串Cookbook:var testValue = "This is the Cookbook's test string";var subsValue = "Cookbook";var iValue = testValue.indexOf(subsVal

2014-05-11 18:49:55 1425

转载 构建高性能web站点

一般而言,人们评估一个web站点的性能如何,通常先置身于用户的角度,来访问该站点的一系列页面,体验等待时间。     当用户输入页面地址后,浏览器获得了用户希望访问该地址的意图,便向站点服务器发起一系列的请求。注意,这些请求不仅包括对页面的请求,还包括对页面中许许多多组件的请求,比如图片、层叠样式表(CSS)、脚本(JavaScript)、内嵌页面(iframe)等。接下来的一段时间,浏览器等

2014-05-09 22:12:46 1264

转载 javascript闭包详解

概念:闭包是指在JavaScript中,内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回了之后,这意味着当前作用域总是能够访问外部作用域中的变量。因为函数是javascript中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数。接下来我们开始进行分析,上代码:function init() {     var name = "Hello

2014-05-03 11:04:43 744

翻译 nodejs详解

目录javascript与node.js    javascript与你    由于javascript真正意义上有两种,甚至可以说是三种形态(从最早的作为DHTML进行增强的小工具,到像jQuery那样严格意义上的前端技术,再到现在的服务端技术),因此,比较难找到一个”正确“的方式来学习JavaScript,使得让你书写Node.js应用的时候感觉自己是在真正开发它而不仅仅是使用它。

2014-05-01 13:04:40 2185 1

翻译 web页面布局

随着Web上不同布局技术的数量激增,似乎每个CSS都用自己的技术创建多列的布局,而且新的CSS开发人员常常使用一种技术却不真正了解它的工作原理。这种进行css布局的“黑盒”方式可能给会迅速地得到想要的结果,但是最终会阻碍开发人员理解这种语言。     所有css布局技术都依赖于三个基本概念:定位、浮动和空白边操纵。不同的技术其实没有本质的差异,而且如果理解了核心概念,那么创建自己的布局是相当容

2014-04-12 13:17:46 2286

转载 CSS选择器的权重详解

原则一: 继承不如指定原则二: #id > .class > 标签选择符原则三:越具体越强大原则四:标签#id >#id ; 标签.class > .classCSS优先级权重计算法CSS优先级包含四个级别(标签内选择符,ID选择符,Class选择符,元素选择符)以及各级别出现的次数!根据这四个级别出现的次数计算得到CSS的优先级。CSS优先级的

2014-04-12 12:50:38 2929

转载 浏览器渲染原理

浏览器渲染工作流程如图:第一步、浏览器会解析三个东西(左边三个浅绿色底区块):1、HTML/SVG/XHTML,事实上,Webkit有三个C++的类对应这三类文档。解析这三种文件会产生一个DOM Tree。2、CSS,解析CSS会产生规则树。3、JavaScript,脚本,主要是通过DOM API和CSS DOM API来操作DOM Tree和CSS R

2014-04-04 12:34:31 1196

翻译 浏览器兼容性问题与解决方案

一、不同浏览器的标签默认的外边界和内填充不同问题表现:不加样式控制下,margin和padding差异较大出现概率:100%解决方案:css里 *{margin:0; padding:0;}备注:这是最常见也是最易解决的一个兼容问题,几乎所有的css文件开头都会用通配符*来设置各个标签外边界和内填充为0二、块属性标签float后,又有横向的margin情况下,在IE6显

2014-04-02 13:46:51 1428

转载 JavaScript原型面向对象构造

1 封装先使用构造函数声明一个类,在构造函数中给this添加本地属性,并实例化一个对象,这种方式可以为对象声明一个公共的本地属性:function Animal(name) {     this.name = name;     this.sleep = function() {          alert(this.name + ' sleep');     };}

2014-03-30 12:30:56 711

转载 基于原型的JavaScript面向对象

1、前言从JavaScript开始流行到今天,学习它的人都会有个疑惑——JavaScript是不是面向对象语言?其实,ECMA-262早就给出了答案,在ECMAScript的第一个版本中就明确指出,ECMAScript是一种面向对象的语言,从JavaScript开始流行到今天,学习它的人都会有个疑惑——JavaScript是不是面向对象语言?其实,ECMA-262早就给出了答案,在ECMASc

2014-03-30 12:28:10 1243

翻译 jquery事件绑定详解

jquery事件绑定有三类,分别如下:.bind()、live()、delegate()     三者之间没有的区别不是很明显,但是理解它们的具体使用场景,有助于我们写出简洁的代码,并防止我们的交互程序出现没有预料的bug。事件绑定首先先看来dom树结构下面提供一个示例图:事件冒泡(也称作事件传递)(Event bubbling aka event propagat

2014-03-22 19:46:42 1141

转载 javascript继承机制

javascript继承可以通过call、apply、prototype实现。一、call:在子类中,用父类.call(this, arg0, arg1, arg2..)可以继承父类。注意call的位置,尽量在子类的第一行(js按顺序执行,放在后面可能对子类的其它属性、方法有影响。比如子类和父类有相同名字的方法,后面的覆盖前面的)。马上代码:            ca

2014-03-21 13:57:50 862

翻译 addEventListener详解

addEventListener是一个侦听事件并处理相应的函数。原型:    public override function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false)

2014-03-06 11:40:06 4074

翻译 IE6实现无抖动固定定位

概述:     IE6不支持固定定位(position:fixed)是众所周知的事情,所以我们要想在IE6做出固定定位的效果就只能用JS,但是用js会出现“跳动”的效果,所以有没有不用JS而且不跳动的办法呢?这是怎么做到的呢?今天说说CSS中的行为expression。什么是行为-expression:     就是CSS属性后面可以是一段JS表达式,CSS属性的值等于JS表达式计算的

2014-03-02 17:03:52 1161

转载 iframe高度自适应

在实际的项目进行中,很多地方可能由于历史原因不得不去使用iframe,包括目前正火热的应用开发也是如此。     随之而来的就是在实际使用iframe中,会遇到iframe高度的问题,由于被嵌套的页面长度不固定而显示出来的滚动条,不仅影响美观,还会对用户操作带来不便。于是自动调整iframe高度就成为本文的重点。     采用javascript来控制iframe元素的高度是i

2014-03-02 15:43:25 1273

转载 ajax交互原理

ajax:异步javascript和xml,是指一种创建交互式网页应用的网页开发技术,ajax技术的核心操作是用xmlHttpRequest(简称XHR)对象进行异步数据处理,所谓异步,即通过ajax,javascript无需等待服务器的响应,而是在等待服务器响应时执行其它脚本,当响应就绪后对响应进行处理作用:在ajax中主要利用javascript的XHR对象来传递用户界面上的数据到服务端并

2014-02-19 18:32:39 5494

单元测试js框架

前端测试框架phantomjs,用来结合nodejs+grunt配置使用

2014-09-27

iframe跨域解决方案

在web开发中,跨域问题是经常遇到的,但是由于浏览器同源策略的限制,不同域之间属性和操作是无法直接交互的。本次讨论iframe和父页面的消息通信。

2014-01-19

vi常用命令

常用的vim命令整理,VI的使用 文本编辑 保存退出

2012-02-17

JS匿名函数、闭包

匿名函数,也称为拉姆达函数,是一种使用JavaScript函数的强大方式。以下总结了匿名函数的特点: 任何函数表达式从技术上说都是匿名函数,因为没有引用它们的确定的方式; 在无法确定如何引用函数的情况下,递归函数就会变得比较复杂; 递归函数应该始终使用arguments.callee来递归地调用自身,不要使用函数名--函数名可能会发生变化。 当在函数内部定义了其他函数时,就创建了闭包。闭包有权访问包含函数内部的所有变量,原理如下: 在后台执行环境中,闭包的作用域链包含着它自己的作用域、包含函数的作用域和全局作用域; 通常,函数的作用域及其所有变量都会在函数执行结束后被销毁; 但是,当函数返回了一个闭包时,这个函数的作用域将会一直在内存中保存到闭包不存在为止;使用闭包可以在JavaScript中模仿块级作用域(JavaScript本身没有块级作用域的概念),要点如下: 创建并立即调用一个函数,这样既可以执行其中的代码,又不会在内存中留下对该函数的引用; 结果就是函数内部的所有变量都会被立即销毁--除非将某些变量赋值给了包含作用域(即外部作用域)中的变量。 闭包还可以用于在对象中创建私有变量,相关概念和要点如下: 即使JavaScript中没有正式的私有对象属性的概念,但可以使用闭包来实现公有方法,而通过公有方法可以访问在包含作用域中定义的变量; 有权访问私有变量的公有方法叫做特权方法; 可以使用构造函数模式、原型模式来实现自定义类型的特权方法,也可以使用模块模式、增强的模块模式来实现单例的特权方法。 JavaScript中的匿名函数和闭包都是非常有用的特性,利用它们可以实现很多功能。不过,因为创建闭包必须维护额外的作用域,所以过度使用它们可能会占用大量内存。

2012-02-16

javascript脚本化文档

客户端JavaScript的存在把静态HTML转变为交互式的Web应用程序。脚本化Web页面的内容正是JavaScript存在的理由。本章将介绍如何做到这些,这是第二部分中最重要的一章。 每个Web浏览器窗口(或帧)显示一个HTML文档。表示这个窗口的Window对象有一个document属性,它引用了一个Document对象。这个Document对象是本章的主题,本章从学习Document对象自身的属性和方法开始。这些很有趣,但它们只是开始。 比Document对象本身更有趣的,是那些表示文档的内容的对象。HTML文档可以包含文本、图像、超链接,以及表单元素等等。JavaScript代码可以访问和操作表示每个文档元素的对象。能够直接访问表示一个文档的内容的对象。这一能力是很强大的。但是这也使事情开始变得复杂起来。 一个文档对象模型或者说DOM就是一个API,它定义了如何访问组成一个文档的对象。W3C定义了一个标准的DOM,它理所当然地在所有现代Web浏览器中得到了很好的支持。不幸的是,情况并非总是如此。客户端JavaScript编程的历史真的是DOM发展的历史(有时候是以不兼容的方式发展的)。在Web的早期,Netscape是领先的浏览器厂商,并且它为客户端脚本定义了API。Netscape 2和Netscape 3支持一个简单的DOM,它提供了仅仅对于链接、图像和表单元素这样的特殊文档元素的访问。这一遗留的DOM被所有的浏览器厂商采用,并且已经作为“0级别”DOM正式纳入到W3C标准中。这一遗留的DOM仍然在所有的浏览器中有效,将首先介绍它。 通过IE4,Microsoft控制了Web。IE4拥有一个革命性的DOM:它允许访问一个文档中的所有元素,并且允许以很多有趣的方式来脚本化很多元素。需要的话,它甚至允许改变一个文档的文本,重新排列文档的段落。Microsoft的API叫做IE4 DOM。它并没有标准化,并且IE 5以及随后采用了W3C DOM的浏览器版本也仍然支持IE 4 DOM。IE4 DOM的一部分也被其他的浏览器所采用,并且,它仍然在Web中发挥作用。在介绍了IE4 DOM的标准替代之后,将在本章末尾介绍它。 Netscape 4针对DOM采用了一种非常不同的方式,基于叫做层的动态定位的可脚本化元素。这一Netscape 4 DOM是革新的尽头,它只被Netscape 4支持,并且在由Netscape代码基础上扩展而来的Mozilla和Firefox浏览器中也被抛弃了。对Netscape 4 DOM的介绍也从本书的这一版本中删除掉了。 本章的大部分内容介绍W3C DOM标准。然而,请注意,在这里只是介绍这一标准的核心部分。脚本化文档内容正是客户端JavaScript存在的理由,并且,本书其余的各章确实是本章的延续。第16章介绍了处理CSS样式和样式表的W3C DOM标准。第17章介绍了用于处理事件(以及实现这些任务的遗留技术和特定于IE的技术)的W3C DOM标准。第18章介绍了和HTML表单元素交互的DOM。第22章介绍了如何脚本化一个HTML文档的<img>标记,以及如何为客户端Web页面添加脚本化的绘图。 DOM的0级别只是定义了一个Document类,并且本章常常非正式地称其为Document对象。可是,W3C DOM定义了一个Document API,它提供了可用于HTML和XML文档的通用文档功能,以及一个专门的HTMLDocument API,用来添加特定于HTML的属性和方法。本书第四部分的参考资料遵从了W3C的惯例,如果读者要查看特定于HTML的文档功能,那么在HTMLDocument下查找。0级别的DOM的大多数功能都是特定于HTML的,必须在HTMLDocument下查找它们,即便本章将它们引用为Document的属性和方法。

2011-12-14

JavaScript继承

在JavaScript中继承是一个非常复杂的话题,比其他任何面向对象的语言中的继承都复杂得多。在大多数其他面向对象语言中,继承一个类只需使用一个关键字即可。与它们不同,在JavaScript中要想达到传承公用成员的目的,需要采取一系列措施。更有甚者,JavaScript属于使用原型式继承(我们会向你证明这其实是一个极大的优点)的少数语言之一。得益于这种语言的灵活性,你既可使用标准的基于类的继承,也可使用更微妙一些(但也可能更有效一些)的原型式继承。 本章将讨论在JavaScript中创建子类的各种技术以及它们的适用场合。

2011-12-13

脚本化浏览器窗口

在本章中,将学习如何: 把JavaScript代码注册为将要执行一次或者重复执行。 获取显示在窗口中的文档的URL,并且从这个URL中解析出查询参数。 让浏览器载入并显示一个新的文档。 告诉浏览器在它的浏览历史中后退或前进,并且学会控制如打印等其他的浏览器函数。 打开一个新的浏览器窗口,操作它们并关闭它们。 显示简单的对话框。 确定JavaScript代码在什么浏览器中运行,并且获取有关客户端环境的其他信息。 在浏览器窗口的状态栏显示任意的文本。 处理在一个窗口中发生的未捕获的JavaScript错误。 编写和多个窗口或帧交互的JavaScript代码。

2011-12-07

富有表现力的JavaScript

JavaScript是现在最流行、应用最广泛的语言之一。由于所有现代浏览器都嵌入了JavaScript解释器,所以在大多数地方都能见到其身影。作为一种语言,它在我们的日常生活中起着非常重要的作用,支持着我们访问的网站,帮助Web呈现出多姿多彩的界面。 那为什么有些人还把它看作一种玩具式的语言,认为它不值得职业程序员关注呢?我们认为其原因在于,人们没有认清这种语言的全部能力及其在当今的编程世界中的独特性。JavaScript是一种极富表现力的语言,它具有一些C家族语言所罕见的特性。 本章将探讨一些令JavaScript如此富有表现力的特性。从中你可以体会到,这种语言允许你用各种方式完成同样的任务,还允许你在面向对象编程的过程中借用函数式编程中的概念来丰富其实现方式。本章解释了究竟为什么应该使用设计模式,以及它们在JavaScript程序设计的运用是如何使代码更高效、更易于处理的。

2011-12-04

脚本化Java

尽管名字叫做JavaScript,但JavaScript和Java编程语言没有关系。尽管由于它们都是用C编程语言的语法,它们表面上有一些语法相似性,但是,它们却有很大的不同。尽管如此,JavaScript也不断发展,并且现在能够真正用来脚本化Java。Java6认识到这一事实,并且配备了一个绑定的JavaScript解释器,一般脚本化的功能能够很容易地嵌入到任何Java应用程序中。另外,一些JavaScript解释器(如绑定到Java6的JavaScript解释器)支持一个功能集,该功能集允许JavaScript和Java对象交互、设置和查询字符以及调用方法。 本章首先介绍如何把JavaScript解释器嵌入到一个Java6应用程序中,以及如何从该应用程序运行JavaScript脚本。然后,回过头来展示这些脚本如何直接脚本化Java对象。我们还将在第23章再次回到Java脚本化的话题,第23章还介绍了在一个Web浏览器环境中的Java applet和Java插件。

2011-11-16

使用正则表达式的模式匹配

正则表达式(regular expression)是一个描述字符模式的对象。JavaScript的RegExp类表示正则表达式,而String和RegExp都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。 ECMAScript v3对JavaScript正则表达式进行了标准化。JavaScript 1.2实现了ECMAScript v3要求的正则表达式特性的子集,JavaScript 1.5实现了完整的标准。JavaScript的正则表达式完全以Perl程序设计语言的正则表达式工具为基础。粗略地说,JavaScript 1.2实现了Perl 4的正则表达式,JavaScript 1.5实现了Perl 5的正则表达式的大型子集。 本章定义了正则表达式用来描述文本模式的语法。它还介绍了使用正则表达式的String与RegExp方法。

2011-11-14

模块和名字空间

在早些年的时候,JavaScript往往用在那些直接嵌入到Web页面中的小的简单的脚本中。随着Web浏览器和Web标准变得成熟起来,JavaScript程序也变得更长且更复杂。今天,很多JavaScript脚本依赖于用JavaScript代码编写的外部模块或库。 在编写时,有人正在致力于创建一个可复用的开源的JavaScript模块的集合。在Comprehensive Perl Archive Network(CPAN,全面的Perl存档网络)之后,JavaScript Archive Network(JSAN, JavaScript存档网络)开始流行起来,并且它希望能够为JavaScript及其社区做到CPAN为Perl语言及其社区所做的那些事情。可以访问http://www.openjsan.org了解详细情况或获取所需代码。 JavaScript没有为创建和管理模块提供任何语言功能,因此,编写可移植及可复用的JavaScript代码模块主要是要遵从一些基本的惯例,本章将介绍这些基本惯例。 最重要的惯例涉及为了避免名字空间冲突要注意名字空间的用法。当两个模块用相同的名字来定义全局属性的时候,就会发生名字空间冲突:一个模块会覆写掉另一个模块的属性,一个模块或者二者都不能正确地运行。 另一个惯例涉及模块初始化代码。在客户端的JavaScript中这尤其重要,因为那些操作Web浏览器中的文档的模块,在文档完成载入后,往往需要代码去触发模块。 下面的各节讨论名字空间和初始化。本章最后给出一个模块的扩展的例子,该模块包含一个用于模块的工具函数。

2011-11-08

javascript函数

函数(function)是定义一次但却可以调用或执行任意多次的一段JavaScript代码。函数可能有参数,即函数被调用时指定了值的局部变量。函数常常使用这些参数来计算一个返回值,这个值也成为函数调用表达式的值。当一个函数在一个对象上被调用的时候,这个函数就叫做方法(method),它的调用所在的对象就会作为函数的一个隐式的参数来传递。读者可能已经熟悉了名为子例程(subroutine)或者过程(procedure)的函数的概念。 本章的重点是用户定义的JavaScript函数的定义和调用。另外还有一点比较重要,即JavaScript支持很多内部的函数,诸如类Array的方法eval()、parseInt()和sort()等。客户端JavaScript还定义了其他函数,如document.write()和alert()。在JavaScript中,完全可以像使用用户定义的函数那样使用内部函数。可以在第三部分和第四部分中找到更多有关内部函数的信息。 在JavaScript中,函数和对象是交织在一起的。因此,我们将某些函数特性的讨论推迟到第9章进行。

2011-10-27

对象和数组

在JavaScript中,对象和数组是两种基本数据类型,而且它们也是最重要的两种数据类型。对象和数组与字符串和数字这样的基本数据类型不同,它们不是表示一个单个的值,而是值的集合。对象是已命名的值的一个集合,而数组是一种特殊的对象,它就像数值的一组有序的集合。本章详细介绍JavaScript的对象和数组。

2011-10-21

javascript语句

javascript语句,主要讲解判断、循环、多分支选择结构语句、异常处理语句

2011-10-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除