1,一个完整的JavaScript实现由以下三部分组成:
核心(ECMAScript)
文档对象模型(DOM)
浏览器对象模型(BOM)
2,ECMAScript的基础概念:
区分大小写
变量是弱类型
每行的结尾可有可无
注释与C,JAVA 和PHP相同
括号表明代码块
3,变量的命名规则
Camel标记法:首字母是小写,接下来的单词都以大写字母开头
Pascal标记法:首字母是大写,接下来的单词都以大写字母开头
匈牙利标记法:在Pascal标记法前面加一个小写字母说明变量类型
4,变量可以存放的值的类型
原始值:存储在栈中的简单数据段
引用值:存储在堆中的对象
5,typeof运算符检查变量或值的类型
null值会返回Object..Javascript最初实现的一个错误
6,Undefined类型
当声明的未初始化时,默认值为undefined
当函数无明确返回值时,返回的也是undefined
7,Null类型
表示尚未存在的对象
null == undefined(undefined实际上是从值null派生来)
8,Number类型
不管是什么进制的数进行运算返回的都是十进制结果
浮点数进行计算前,真正存放的是字符串
Number.MAX_VALUE和Number.MIN_VALUE定义了Number值集合的外边界
超过Number.MAX_VALUE的是Number.POSITIVE_INFINITY(Infinity)
小于Number.MIN_VALUE的是Number.NEGATIVE_INFINITY(-Infinity)
isFinit()方法可以判断该数是不是无穷大
NaN值:表示非数,它与自身不相等(NaN != NaN)
isNaN()方法可以判断该数是不是数
9,伪对象和真的对象都有tostring()方法
Number的tostring(5)表示以5进制表示
伪对象有属性和方法 eg: length属性
10,String类型转成数字
parseInt()和parseFloat()
只对String类型有效..其它类型都返回NaN
11,引用类型
var 0 = new Object() ; var 0 = new Object ;(括号不是必需的)
Object类(所有类由这个类继承来)
Construtor:对创建对象的函数引用(object())
Prototype:对该对象的对象原型的引用(默认返回Object对象的一个实例)
HasOwnProperty(property):判断对象是否有某个特定的属性
IsPrototypeOf(object):判断对象是否是另一个对象的原型
PropertyIsEnumerable(property):判断属性是否可以枚举
ToString():返回对象的原始字符串表示
ValueOf():返回最适合该对象的原始值
Boolean类
创建时传递一个值.true or false
重写了Object的ValueOf()和ToString()
所有对象在Boolean表达式中都会自动地转换为true
Number类
所有特殊值都是Number类的静态属性
toFixed():返回具有指定位数小数的数字的字符串表示
toExponential():与toFixed()一样..不过用科学计数法表示
toPrecision():以指定的数字总数返回它的值..表示不了可以四舍五入
String类
length:字符串中的字符个数
charAt(),charCodeAt():返回字符串中的单个字符或字符代码
concat():用于把一个或多个字符串连接到String对象的原始值中
indexOf(),lastIndexOf():指定的字串在另一个字串中的位置
localeCompare():对字符串进行排序(比较)
slice(),substring():返回要处理的字符串的子串,不改变string对象自身的值
toLowerCase(),toLocaleLowerCase():转成小写
toUpperCase(),toLocaleUpperCase():转成大写
instanceof运算符用于识别对象的类型(PHP)
12,运算符
delete:删除以前定义的对象属性或方法的引用(将其设回undefined)
void:对任何值都返回undefined
13,for-in语句:用于枚举对象的属性
14,函数
函数不能重载
特殊对象arguments:无需明确指出参数名,就能访问它们
第一个参数为arguments[0]
arguments.length:参数的个数
ECMAScript不会验证传递给函数的参数个数是否等于函数定义的参数个数
最多能接受25个
Function类
var function_name = new Function(arg1,arg2..argN, function_body) ;
15,本地对象
Array类
Array对象的动作像一个栈
push(),pop()用于添加和删除一个或多个项
shift()将删除数组中的一第一个项,将其作为函数值返回
unshift()把一个项放在数组的第一个位置,余下向后移动一个位置
reverse()颠倒数组项的顺序
sort()升序排序
splice()方法:
Date类
parse():接受字符串为参数,把该字符串转换成日期值(毫秒表示)
UTC():同上,参数为年月日
toDateString():月 日 年
toTimeString():小时,分,秒,时区
toLocaleString():
toLocaleDateString():
toLocaleTimeString():
toUTCString():
setXX()和getXX()方法
16,内置对象(已经实例化了的对象)
Global对象
实际上它根本不存在(var pointer = Global; 将得到错误)
把有函数都必须是某个对象的方法(isNaN()方法是Global里的)
encodeURI()和encodeURIComponent()用于编码传递给浏览器的URI
decodeURI()和decodeURIComponent()用于解码
eval() :接受一个要执行的字符串(最强大的方法之一)
Math对象
max() min() abs() ceil() floor() round()
17,作用域
对象的属性和方法默认为公有的
没有静态作用域
关键字this总是指向调用该方法的对象
18,定义类或对象
工厂方式(CreateObject)
原型方式(利用对象的prototype属性)
继承(.......)
19,BOM
window对象
表示整个浏览窗口
如果是框架集合.每个框架都有它自己的window对象
如果页面没有框架,window和self就等于top,frames集合的长度为0
moveBy(dx, dy):相对当前位置移动水平dx象素, 垂直移动dy象素
moveTo(x, y):使它的左上角位于用户屏幕的(x,y)处
resizeBy(dw, dh):相对于当前大小..宽度调整dw个象素 高度调整dh个象素
resizeTo(w, h):宽度为w 高度为h
open()打开新窗口
close()关闭新窗口
alert() confirm() prompt()系统对话框
status:使状态栏的文本暂时改变
defaultStatus:用户离开当前页面一直改变该文本
setTimeout():
clearTimeout():
setInterval():
ClearInterval():
history 对象
go():前进或后退的页数
back() forward()
document对象
唯一一个既属于BOM又属于DOM的对象
属性:alinkColor bgColor fgColor lastModified linkColor referrer
title URL vlinkColor
集合:
anchors:所有锚的集合
applets:所有applet的集合
embeds:所有嵌入式对象的集合
forms:所有表单的集合
images:所有图像的集合
links:所有链接的集合
write(), writeln()显示指定的内容
open(), close()打开或关闭文档
location对象(BOM中最有用的对象)表示载入窗口的URL
hash:锚
host:服务器的名字
hostname:一般等于host 有时会省掉www
href:完整url
pathname:主机名后的部分
port:端口
protocol:协议
search:Get请求?号后面的部分
assign():location.href
replace():不能back or forward访问
reload():重新载入
navigator对象
浏览器方面的
screen对象
availHeight:窗口可以使用的屏幕的高度
availWidth:窗口可以使用的屏幕的宽度
colorDepth:颜色的位数
height:屏幕的高度
width:屏幕的宽度
20,DOM
与语言无关的API
W3C将DOM最先应用于XML
XML由XML序言开始 : <?xml version=”1.0”?>
SAX提供了一个基于事件的XML解析的API
DOM是针对XML的基于树的API
节点:
Document:最顶层的节点,所有的其他节点都是附属于它
DocumentType:DTD引用的对象表现形式,它不包含子节点
DocumentFragment:可以像Document一样来保存其他节点
Element:表示起始标签和结束标签之间的内容
Attr:代表一对特性名和特性值,不能包含子节点
Text:起始标签与结束标签之间的普通文本
CDataSection:<![CDATA[]]>的对象表现形式
Entity:表示在DTD中的一个实体定义
EntityReference:代表一个实体引用
ProcessingInstruction:代表一个API
Comment:代表XML注释
Notation:代表在DTD中定义的记号
属性或方法:
nodeName:节点的名字
nodeValue:节点的值
nodeType:节点的类型
ownerDocument:指向这个节点的文档
firstChild:指向在childNodes列表中的第一个节点
lastChild:指向在childNodes列表中的最后一个节点
childNodes:所有子节点的列表
previousSibling:指向前一个节点
nextSibling:指向后一个节点
hasChildNodes():当childNodes包含一个或多个节点时,返回真
attributes:包含了一个元素的特性的Attr对象
appendChild(node):将node添加到childNodes的末尾
removeChild(node):从childNodes删除node
replaceChild(newnode, oldnode):将childNodes中的oldnode换成newnode
insertBefore(newnode, refnode):从childNodes中的refnode之前插入newnode
NodeList:节点数组,按照数值索引
NamedNodeMap:同时用数值和名字进行索引的节点表
getNamedItem(name):返回nodeName属性值等于name的节点
removeNamedItem(name):删除nodeName属性值等于name的节点
setNamedItem(name):将node添加到列表中,按其nodeName属性进行索引
getNameditem(pos):返回在位置pos的节点
getAttribute(name):
setAttribute(name, newvalue):
removeAttribute(name):
getElementsByTagName():返回一个包含所有的tagName的元素的NodeList
getElementsByName():获取所有name特性的元素
getElementsbyId():
创建节点:
createxxx(..)
createElement() createTextNode() appendChild()
removeChild() replaceChild() insertBefore()
createDocumentFragment()