您的位置:首页 > Web前端 > JavaScript

读:JavaScript 高级程序设计

2008-04-06 21:57 375 查看


第1章 JavaScript是什么

1.1 历史简述
1.2 JavaScript实现
1.3 小结


一个完整的JavaScript实现包括3个不同部分:核心(ECMAScript),DOM,BOM。

Web浏览器对于ECMAScript来说只是一个宿主环境,还有其他的各种环境可以容纳ECMAScript的实现。ECMAScript仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。

DOM有三个level,各种浏览器支持的level不一样,目前Mozilla支持完整的level1,几乎所有的level2和一部分level3,而IE支持level1。

JavaScript的核心ECMAScript描述了该语言的语法和基本对象。
DOM描述了处理网页内容的方法和接口。
BOM(浏览器对象模型)描述了与浏览器进行交互的方法和接口。


第2章 ECMAScript基础

2.1 语法
2.2 变量
2.3 关键字
2.4 保留字

2.5 原始值和引用值


原始值(primitive value)是存储在栈(stack)中的简单数据段。引用值(reference value)是存储在堆(heap)中的对象,也就是说存储在变量处的值是一个指针,指向存储对象的内存处。

2.6 原始类型

ECMAScript有5种原始类型,即undefined, null, boolean, number和string。可用typeof运算符来判断一个值的类型,如:
var sTemp = "Hello";
alert(typeof sTemp); output string
alert(typeof 95); //output number


当申明的变量未初始化时,该变量的默认值是undefined。值undefined并不等同于未定义的值,但typeof运算符不能区分这两种值。当函数无明确返回值时,返回的也是值undefined。
var oTemp;
alert(typeof oTemp); //output undefined
alert(typeof abc); //output undefined
alert(oTemp == undefined); //output true
alert(abc == undefined); //error


2.7 转换

toString(), parseInt(), parseFloat(), Boolean(), Number(), String()。
对null或undefined值类型采用String()强制转换可以生成字符串而不引发错误,而toString()不可以。


2.8 引用类型

var oBooleanObject = new Boolean(true);
var oFalseObject = new Boolean(false);
var bResult = oFalseObject && true; //outputs true,因为oFalseObject是对象,而非原始值。
最好使用boolean原始值,避免发生错误。


var oNumberObject = new Number(55);
var iNumber = oNumberObject.valueOf();


var oStringObject = new String("hello world");
alert(oStringObject.valueOf() == oStringObject.toString()); //outputs true
String类还有大量的方法:charAt(), charCodeAt(), concat(), indexOf(), localeCompare(), slice(), substring(), toLocaleUpperCase(), toUpperCase(), toLocaleLowerCase(), toLowerCase().


String类的所有属性和方法都可应用在String原始值上,因为它们是伪对象。
alert(oStringObject instanceof String); //output true


2.9 运算符
2.10 语句


2.11 函数

ECMAScript中的函数不能重载。可用相同的名字在一个作用域中定义两个函数而不会引发错误,但真正使用的是后一个函数。在函数代码中,使用特殊对象arguments,开发者无需明确指出参数名,就能访问它。用arguments对象判断传递给函数的参数个数,即可模拟函数重载。

function sayHi() {
if (arguments[0] == "bye") {
return;
}
alert(arguments[0]);
}


var sayHi = new Function("sName", "sMessage", "alert(/"Hello /" + sName + /", /" + sMessage + /"); /");

ECMAScript最容易让人误解的一点是它支持闭包(closure)。所谓闭包,是指词法表示包括不必计算的变量的函数,也就是说,该函数能使用函数外定义的变量。
var iBaseNum = 10;
function addNumbers(iNum1, iNum2) {
function doAddition() {
return iNum1 + iNum2 + iBaseNum;
}
return doAddition();
}


2.12 小结
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: