《javascript高级程序设计》学习笔记一

《javascript高级程序设计》学习笔记一

 

javascript实现

是由三个不同部分组成的
核心:ECMAscript
文档对象模型:DOM
浏览器对象模型:BOM

 

ECMAscript:可以为不同种类的宿主环境提供核心的脚本编程能力,因此核心的脚本语言是与任何特定的宿主环境分开进行规定的。
仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。其他语言都可以实现ECMAscript来作为功能的基准。

DOM 文档对象模型:是HTML和XML的应用程序接口。描述了文档对象的逻辑结构及各功能的标准接口。

BOM 浏览器对象模型:可以对浏览器窗口进行访问和操作。

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

ECMAscript基础

语法的基础概念:
区分大小写
变量是弱类型的:var定义变量,变量可以存放不同类型的值,使用变量之前无需声明
每行的结尾的分号可有可无
注释和代码块和c相同

 

变量的原始类型:
undefined 变量未初始化
boolean
number 一般存整数 如果是存浮点数,真正计算之前存储的是字符串 toString方法
string 没有固定大小的原始类型 parseInt parseFloat转换
null 表示尚未存在的对象 ==NULL

typeof运算符 返回变量类型 如果是引用类型 都返回object
instanceof 明确的确认对象为某特定类型


运算符:
delete
删除对以前定义的对象属性或者方法的引用,删除后值为undefined

void
对任何值都返回undefined,通常用于避免输出不应该输出的值。

全等号=== 全非等号!==
只有在无需类型转换运算数就相等的情况下,才会返回true


语句:
with语句
用于设置代码在特定对象中的作用域
with (expression) statement;
运行缓慢,尽量避免

 

函数:
函数无重载,同一作用域中的两个同名函数前一个函数会被后一个覆盖
不会验证传递给函数的参数个数是否等于函数定义的参数个数,缺少的以undefined传递,多余的将忽略。
可以用arguments对象判断传递给函数的参数个数,开发者无需明确指出参数名,就可以访问他们,用数组的下标访问。
这样就可以模拟函数重载。

 

Function类:
函数实际上是功能完整的对象,可以表示任何自定义的函数
var function_name = new Function(argument1, argument2...., argumentN, function_body);
前面都是参数,后面是函数主体。参数必须是字符串。
(最好不要用,比较慢。所有函数都应该是看做Function类的实例)

 

闭包:
词法表示包括不必计算的变量的函数,该函数支持使用函数外定义的变量。使用全局变量时一个简单的闭包实例。

 

////////////////////////////////////////////////////////////////////////////////////////////////////////

 

对象基础

 

ECMA把对象定义为“属性的无序集合,每个属性都存放一个原始值、对象或者函数”
==>对象是无特定顺序的值的数组
对象的定义放在构造函数中。

 

对象的类型:
可以创建并且使用的对象有三种
本地对象:独立于宿主环境的ECMAscript实现提供的对象,已定义的类。(object array string等)
内置对象:由ECMAscript实现提供的、独立于宿主环境的所有对象,在程序开始执行时出现。无需明确实例化,已经被实例化了,只有两个(global和math)
宿主对象:所有非本地对象都是宿主对象。所有BOM和DOM对象都是宿主对象。

关键字this
总是指向调用该方法的对象

 

定义类或者对象

1.工厂方式
function createCar(){
 var tempCar = new Object;
 tempCar.color = "res";
 tempCar.show = showColor; //function
 return tempCar;
}
function showColor()
{
 alert(this.color);
}

2.构造函数方式
function car(scolor, idoor)
{
 this.color = scolor;
 this.doors = idoor;
 this.showColor = function()
 {
  alert(this.color)
 };
}
不需要创建对象,而是使用this关键字

3.原型方式
function car(){}
car.prototype.color = "red";
car.prototypr.showColor = function()
{
 alert(this.color);
};
还有混合几种方式的构造方法,但是基本用上述三种方式就足够了
跟c++相比js的类和对象的构造方式算是很灵活的了,可以灵活应用


////////////////////////////////////////////////////////////////////////////////////////////////////

 

html嵌入javascript


1.标签
<script type=text/javascript>
.....
</script>
2.外部文件格式
<script type=text/javascript src="external.js"></script>


BOM
浏览器中的javascript,BOM提供了独立于内容而与浏览器窗口进行交互的对象。
window对象时整个BOM的核心,所有对象和集合都以某种方式回接到window对象

 

window对象
表示整个浏览器窗口,但不表示其中的内容。

1.窗口操作:移动 改变大小等
(尽量不要使用)

2.导航和打开新窗口
用window.open()方法打开新窗口
4个参数,要载入新窗口的URL、新窗口的名字、特性字符串、说明是否用新载入页面替换当前载入页面的boolean值。
特性字符串是用逗号分隔的设置列表 定义新创建的窗口的某些方面

3.系统对话框
向用户弹出信息
alert confirm prompt

4.状态栏
用于向用户显示信息
可以用window对象的两个属性设置它的值,status和defaultstatus属性。暂时改变文本和始终改变文本。


document对象
实际上是window对象的属性,window对象的任何属性和方法都可以直接访问
这个对象的独特之处就是他既是一个BOM又是一个DOM
由一系列集合构成,这些集合可以访问文档的各个部分,并且提供页面自身的信息。
anchor applets embeds forms images links
可以用数字或者名字引用document对象的每一个集合 document.images[0]/document.images["image_name"]

write和writeln写入文档
把字符串插入到调用它们的位置,浏览器就可以像处理页面中的常规html代码一样处理这个文档字符串
必须在完全载入页面之前调用write和writeln方法,如果任何一个方法是在载入后调用的,那将抹去已有的内容。
配合open和close方法,打开和关闭要写的文档

 

location对象
表示载入的url 还可以解析url
是window对象和document对象的属性

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

DOM


处理特性
getNameItem(name) 返回nodeName属性值等于name的节点
removeNameItem(name)删除
setNameItem(node)添加到列表中
item(pos)返回位置在pos的节点
上述方法都是返回一个attr节点,而非特定值

 

访问指定节点
getElementByTagName 返回指定标签tag的元素对象数组,数组中每个元素分别对应文档中的一个特定的元素节点
getElementByName 用于获得所有name特性等于指定值的元素
getElementById 返回id特性等于指定值的元素

 

posted @ 2012-07-17 16:04  w0w0  阅读(178)  评论(0)    收藏  举报