《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特性等于指定值的元素
浙公网安备 33010602011771号