[JavaScript]正则表达式的修饰符详解

JavaScript正则表达式的修饰符对于正则新手来说是个容易混淆的知识点,下面来详细的总结下,以加深印象。
JavaScript正则表达式的修饰符包含:”g”、”i” 和 “m”,分别用于指定全局匹配、不区分大小写的匹配和多行匹配。
1.全局匹配的修饰符:g
全局匹配指查找所有匹配而非在找到第一个匹配后停止。

阅读余下全文 »

[JavaScript]void运算符详解

第一部分 语法及其注意事项
在大多数语言中,void关键字是一种类型,表示没有值;但是在JavaScript语言中,void是一种运算符,它接受一个表达式,并且返回undefined。
它的语法是:

其中,expression是一个标准的JavaScript表达式,并且表达式外面的括号是可选的。
在使用void运算符的过程中,需要注意一下几点:
1.由于void是个优先级比较高的运算符,在计算表达式的时候,建议采用加括号的语法。
JavaScript中运算符优先级请参考:运算符优先级

2.void是个运算符,而不是函数,它不能被重新定义,如果自定义一个void函数,会抛出异常。
阅读余下全文 »

XMLHttpRequest对象详解

XMLHttpRequest是实现Ajax的核心对象,平时我们在开发中使用的Ajax技术,一般都是成熟框架所提供的(比如ExtJS、JQuery等)封装成熟的调用接口,多数人对于XMLHttpRequest对象并不是非常了解。要深入掌握Ajax技术和熟练解决运用Ajax技术所遇到的各种问题,非常有必要掌握Aaxj技术的核心:XMLHttpRequest对象,下面开始对XMLHttpRequest对象进行详细的说明。
一.定义及作用
XMLHttpRequest是什么?实现Ajax技术的核心对象?浏览器的接口?客户端与http服务器通信的协议?
如何回答什么是XMLHttpRequest是什么这个基本的问题呢?
目前比较通用的定义是:XMLHttpRequest是一套可以在Javascript等脚本语言中通过http协议传送或接收数据的接口。
因此,可以把它理解为一种接口,一种可以在诸如Javascript等脚本语言中与http服务器通信的接口。
通过与http服务器的通信,客户端获取数据,然后利用JavaScript脚本语言通过获取的数据来更新局部的DOM节点,实现局部刷新,而不需要刷新整个页面,重新加载新的HTML文档。因此,XMLHttpRequest的主要作用是更新网页的部分内容而不需要刷新整个页面。
二.如何创建
最早的时候,只有微软的IE5浏览器引进和支持XMLHttpRequest,因为它的作用和影响太大,其他的主流浏览器也支持XMLHttpRequest。
当前,在所有的主流浏览器上,XMLHttpRequest都得到了较好的支持。只是在IE5和IE6中,必须使用特定于IE浏览器的ActiveXObject()构造函数才可以创建,因此,如果想要创建一个兼容性良好的XMLHttpRequest,必须考虑到IE5和IE6的这种特殊情况。
一般的兼容创建代码如下:

代码解读:在Chrome、Firefox、Safari和Opera等主流浏览器的全局对象(Window对象)上存在XMLHttpRequest构造函数,因此可以直接通过new XMLHttpRequest()来创建XMLHttpRequest对象;而在IE5、IE6这样的低版本浏览器中,全局对象下没有XMLHttpRequest构造函数,这时检测ActiveXObject构造函数是否可用,然后再利用ActiveXObject构造函数来创建XMLHttpRequest对象。
阅读余下全文 »

[JavaScript]Document对象的nodeName、nodeValue和nodeType属性总结

平时的工作实践中直接接触成熟的JavaScript框架,对于Document对象的属性的直接应用相对比较少,前段时间在研究ExtJS框架源码的时候,遇到了nodeName、nodeValue和nodeType这三个属性,对于他们的某些写法(比如利用nodeType判断当前元素是否为DOM的节点元素)比较陌生(直接暴露了基础知识的不扎实啊),因此在此总结这三个Document对象属性的用法,顺便温习下Document对象的基本属性和方法。
一.nodename
nodeName 属性可依据节点的类型返回其名称。
元素节点的 nodeName 是标签名称
属性节点的 nodeName 是属性名称
文本节点的 nodeName 永远是 #text
文档节点的 nodeName 永远是 #document
注:nodeName属性是一个只读属性,不能进行设置。
二.nodeValue
nodeValue属性可根据节点的类型来设置或返回某个节点的值。
对于节点节点,nodeValue 返回null。
对于文本节点,nodeValue 属性包含文本。
对于属性节点,nodeValue 属性包含属性值。
注:nodeName属性用来设置或返回某个节点的值,因此它是个读写属性。
阅读余下全文 »

[JavaScript]类型检测的总结

在JavaScript的世界里,如果需要检测一个对象的类型,通常分不同的情况,有不同的实现。这常常让人迷惑,下面本人对JavaScript中类型检测进行总结。
一.使用typeof操作符
typeof是检测能力最弱的一种检测方式。
它的调用方法如下:

注:于 typeof 也可以像函数的语法被调用,比如 typeof(obj),但这并是一个函数调用。 那两个小括号只是用来计算一个表达式的值,这个返回值会作为 typeof 操作符的一个操作数。 实际上不存在名为 typeof 的函数。
typeof只能返回如下几个结果:number、boolean、string、function、object和undefined(返回的类型都是字符串类型),对于诸如boolean、string、number、function等基本类型的检测还是可以满足的,但是对于对象类型的检测就有问题了,因为它总是返回object。
对于typeof,最重要的用法当属用它来检测一个对象是否已经定义或者是否已经赋值

因此它常常用来检测一个对象是否已经定义或者是否已经赋值,却不是用来检查对象的类型。
测试代码:

阅读余下全文 »