美丽涵涵童装店--说我博客名字,给你们打折!
随笔 - 82  文章 - 266  trackbacks - 0
<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234


点击这里给杨爱友发消息
美丽涵涵童装店
说我博客名字,给你们打折!

常用链接

留言簿(6)

随笔分类

随笔档案

文章档案

好友的BLOG

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

序言

写本文的目的是对最近看过的篇幅进行简单的总结,把我认为重点应该记住的东西写出来,方便以后查看回忆。

ECMAScript基础

Ø        20世纪90年代,为了提高系统运行速度,各大厂商分别开发了自己的script脚本,用于在客户端进行数据校验等功能,但开发出来的网页不能够跨平台运行。随着业界的担心,制定一个script标准势在必行。ECMAScript就是规定了能适应于各种宿主环境的script核心语法规则。一个完整的javascript库包括三部分:ECMAScriptDOMBOM

Ø        原始值:是存储在栈中的简单数据段,也就是说,他们的值直接存储在变量访问的内存空间。

Ø        引用值:是存储在堆中的对象,也就是说,存储在变量处的值是一个指针,指向存储对象的内存处。

Ø         5中原始值:StringNumberObject undefined boolean

Undefined 声明的变量未初始化;

Null 表示尚未存在的对象;

Number 5个特殊值也属于此类型:Number.max_valueNumber.min_valueNumber.positive_infinity
Number.negative_infinityNAN

相关的方法有:isFinit()isNaN()

Ø        typeOf 检查变量类型;intenseOf 检测对象类型。

Ø        5种引用类型:

Number类型相关方法:paserInt() paserFloat() toFixed()toExponential()toPrecision()
String类型包含的常用方法有:charAt() charCodeAt() indexOf() lastIndexOf() splice() contact() lowerCase() toUpperCase()

Ø         函数理解:JS中的函数其实是一个功能完整的对象,类Function可以创建任何类型的函数,也即对象,对象名或叫函数名只是一个指向对象的指针,所以函数名可以做为参数传递给另外一个函数。

第三章 对象基础

JS中有没有类,为何说JS中没有真正的类?什么才叫正式的类?

JS中有三种对象:本地对象、内置对象、宿主对象。

本地对象:独立于宿主环境的ECMAScript定义的对象(类?)最常用的有ArrayDate类。

Ø         Array类:可以声明一个变量直接进行附值,但是不能用数组的一些方法?(试验)数组Array对象包含的方法有:toString()valueOf()toLocalString()join()contact()slice()pushpop()shift()unshift()reverse()sort()splice()

Ø         Date对象:以后再仔细的看。

内置对象:类似JSP中的内置对象,不需要开发者实例化即可使用,调用里面的方法也不需要指出对象的引用,当然了,内置对象都属于本地对象,在JS中提供两个内置对象:globalMath对象。

Ø         Global对象:它包含很多方法和和属性,但用代码来测试他又不是个对象,不解,为什么ECMA不叫他是个对象。它包含的方法有:siNan()isFinite()parseInt()parseFloat()encodeURL()decodeURL()eval()JS提供的一些特殊值及所有本地对象的构造函数都是Global对象的属性,它包含的特殊值有:undefinedNaNinfinityObjectArrayFunctionBooleanStringNumberDateRegExpError…….and so on

Ø         Math对象:一发很复杂、很有用、必须要熟记其所有方法的对象。它包含很多属性,大多是数学计算时的特殊值,例如:ELN10LOG2Log10EPISQRT1_2sqrt2。它包含的方法有:min()max()abs()random(),舍入操作的ceil()floor()round(),与指数有关的方法exp()log()pow()sqrt()及全部的三角函数求值方法。

JS中所有的方法和属性都是public类型的。

JS中,对象名只是一个引用,指向对象的内存地址。JAVA中每个对象都独立站用一快内存空间,变量名即是对象的存储处?

ECMAScript中没有StringBuffer对象,要通过自己编写代码来创建具有此功能的对象。用Array对象可以使用同样的功能。

ProtoType对象的所有属性和方法都会被传递给那个类的所有实例。

每个对象都有ProtoType属性,可以通过它更改或添加任何本地、内置对象的方法。

定义类(对象):有5种常用的方式,它们分别是构造函数方式、原型方式、混合的构造函数/原型方式、动态原型方式、混合工厂方式。我觉得混合方式和动态原都比较好,在对象比较复杂的情况易用混合方式,在对象定义简单的情况下用动态原型方式更为直观。

第四章 继承

为了安全,不能继承本地类和宿主类?

JS中没有真正意义上的继承,都是模仿继承机制,常用的有三模仿继承的机制:对象冒充、call()方法、apply()方法(实验)、原型链方式(实验)。通过比较还是用混合的方式比较好,用call()方法继承属性,用原型链方式继承方法。

另外利用第三方JS库可以使用其他的继承方式,如:zInheritxbObjects

第五章 浏览器中的JS

前三张都是对核心ECMAScript的讨论,以下章节都是与WEB有关的内容。

XHTML中大于、小于等特殊方法不能被正确识别?(P115(实验)

BOM:提供了独立于内容而与浏览器窗口进行交互的对象。

Ø         Window对象表示整个浏览器窗口。如果使用框架,每个框架都有自己的window对象,存放在Frames集合中,调用window对象的属性和方法时,不必要明确引用它。

Window对象的方法有:

窗口操作:moveBy()moveTo()resizeBy()resizeTo()

获取位置和大小:screenLeft()screenTop()

导航和打开新窗口:JS可以导航到指定的URL,并用window.open()方法打开窗口,该方法接受4个参数,即要载入页面的URL、新窗口的名字、特性字符串、是否替换当前页面的Boolean值。这个方法返回一个window对象的引用值。Openner属性存放打开它的窗口的引用。

弹出系统对话框:alert()confirm()prompt()

状态栏:window对象的两个属性statusdefaultStatus

暂停和时间间隔:setTimeOut()clearTimeout()setInerval()clearInterval()。(练习使用)

历史:history对象完成。

Ø         Document对象:由一系列的集合组成,如anchorsappletsembedsformsimageslinks。方法有write()writeln()open()close()

Ø         Location对象:表示载入窗口的URL,他也可以解析URL,它包含的属性有hashhosthostnamepathnameportprotocolsearch。方法有:replace()reload()toString()

Ø         Navigator对象:一个重要的用途就是检测浏览器类型及版本,在chapter 8将详细介绍。

Ø         Screen对象:用于用户获取屏幕信息,它包含的属性有availHeightavailWidthcolorDepthHeightwidth

第六章 DOM基础

 

起源:XML是从SML派生而来的,SGML有许多奇怪的语法规则,解析SGML文档非常困难。XML去掉了SGML许多另人头疼的随意语法,使解析XML变得容易。XML的主要目的是使用文本以结构化的方式来表示数据。ML—标记语言。(待续)

第八章 检测浏览器和操作系统

 

Ø         对象特征检测法:判断浏览器是否支持某对象/特征,而不在乎浏览器的真正身份,此方法简单,问题是不能检测浏览器的具体类型。

Ø         User_agent检测法:原理:每个访问望阿站的程序都会提供一个user_agent字符串来向服务器确定它的身份。用mavigator.userAgent可以得到此字符串,这个字符串是user_agent方式检测浏览器的基础。

当然了记住各浏览器的user_agent字符串将给你带来编程时的方便,但是好象不容易。(有必要吗?)

user_agent字符串简史:了解它,可以让你更容易第记住浏览器的user_agent字符串。

Ø         浏览器检测脚本:此部分属于公用代码,应该写到一个公用文件中,每个项目都可以直接用,我所参与的项目中有这些脚本文件吗?

navigator.appVersion不就可以确定浏览器版本了吗?为什么还要用user_agent方式获取?

书中只讨论windowsmacintosh平台?

练习:写一个用于比较来年感个版本号大小的函数;写一个用于检测是否为IE和检测IE版本号的函数。

Ø         OS检测脚本:用navigator.platform来检测OS

练习:写一个检测windows版本的程序。

第九章 事件

事件流:IE的冒泡型事件留、Netscape的捕获型事件留及DOM事件留。

事件处理函数:给元素附加事件处理函数在IEDOM有不同的实现方式。在IE中每个元素都有attachEvent()detachEvent()方法;在DOM中有对应的addEventListener()removeEventListener()方法。

事件对象:包含发生事件时鼠标、键盘等信息的对象。

IE中这些信息被包含在event对象中。熟记event对象的属性和方法P234

事件类型:

Ø         熟记鼠标事件:clickdblclickmouseoutmouseovermouseupmousemove

每个鼠标事件都会给event对象的以下属性添入值:坐标属性、Type属性、srcElement属性、shiftKey ctrlKey altKeybutton属性。鼠标事件的顺序。

此节内容可以结合第十一章内容学习。

Ø         键盘事件:keyDown—键盘上按下某键时触发,针对所有键。keyPress—按下键并产生一个字符时触发,所以按下shiftartctrl及方向键时并不会触发此事件。

HMTL事件load事件、unload事件、select事件、change事件、resize事件、scroll事件blur事件、body的两个属性—scrollLeftscrollTop。结合第十一章学习。

第十章 高级DOM技术

CSS中样式特性名字的书写与JS中不同,在Style对象中,两个单词的样式表示方法是匈牙利表示法。

Style对象可以操纵内联样式的值。它有个cssText属性,存储此CSS样式的字符串。

DOM样式的方法:

提示:此类方法在IE中不实用。DOMStyle对象中包含方法:getPropertyValue()getpropertyPriority()item()removeProperty()serProperty()

自定义鼠标提示:原意鼠标移到某元素上显示title提示;

现意当鼠标移到某元素上时,让某他原本隐藏的DIV显示在某特定位置(一般在鼠标旁边)

可折叠区域:介绍一个具体应用。很不错的,练习。

访问样式表:样式表<style/>元素中或在外部样式表中定义的CSS样式。

Document.styleSheets可以获得样式表的引用。它有一些常用的属性—disabledtype等。

样式表引用对象有个cssRulesrules属性,它包含样式表中所有的CSS规则,它是一个集合。

最终样式:它由所有内联样式和CSS规则计算出的最终结果,也即其作用的CSS样式元素集合。在IE中可以用style.currentStyle来获得。

innerTextinnerHTML

不解:oDiv.innerText = oDiv.innerText将删除oDiv标签。

IE中的范围:

创建范围—creatTextRange()

选择某个区域:findText()

移动选区:move()moveStart()moveEnd()expand()

与范围内容交互:text属性和pasteHTML()方法;

折叠范围:collapse() 就是清楚removeclear的意思?

比较范围:compareEndPoints()isEqual()isRange()

复制范围:duplicate()

范围的引用:值得一看,30秒钟。

第十一章 表单和数据完整性

<form/>元素的特性:methodactionenctypeacceptaccept_charset

表单元素的共性:disabledformblurfocus()onblur()onfocus()

仅提交一次:当点击提交按钮后禁用它,是用户不会重复提交多次。

不能用submit按钮并用onclick禁用,因为在表单提交前已经被禁用,这讲导致表单不被提交,怎么用普通的button就可以?

Reset:即使使用reset()方法, onreset事件函数仍会被触发。

文本框事件:blurfocuschangeselect,其中change事件是在文本框失去焦点后才被触发。

自动选中文本:一个具体应用。当获到焦点时便选中文本。

自动切换到下一个:一个具体应用。代码写得不错,值得一看。

限制textarea的字符数:虽然textarea不能用maxlength属性来限制最大输入长度,但仍可以设置manlength属性可,并可以通过getAttibute()来获取这个值。

允许/阻止文本框中的字符:阻止无效字符,只允许输入有效字符。看代码,挺有用的。

不要忘记粘贴:禁止粘贴;失去焦点时进行验证。

使用上下方向键操作数字文本(自增、自减):

列表和组合框:只要给 <select/>元素添加size特性就可以使组合框变为列表。Multiple属性用于设置是否可多选,默认不能。

删除选项:将某想置为null;用remove()方法。

移动选项:可以直接从一个列表框移到另一个列表框?(实验)

重新排序选项:重要用到DOM中的insertBefore()函数。

自动提示文本框:创建匹配的Array数组;获取匹配的只的Array;将选中的条目添加到文本框。再看代码,写得很好。
 

第十二章 对表格排序

这一章探索了如何JavaScript将很多基于服务器端的功能转移到客户端,即对HTML表格进行排序。这一章完全没有新的语法知识,完全是对以前章节知识的应用。练习用一下一切OK

知识要点:Array对象的sort()方法可以接受一个客户化的比较函数作为参数。

建立一个能处理各种数据类型的比较函数。

Reverse()倒序。

<> 可以对StringDateNumber类型的数据进行比较?

可以为HTML元素添加自定义特性。

第十三章 拖放

系统拖放:由操作系统处理完成的拖放行为;

模拟拖放:创建可以跟着鼠标移动的绝对定位层。

另外还可以利用aDragDrop库来实现拖放功能。

第十四章 错误处理

 

JS中的错误:发生在解析(编译)时的语法错误;

JS中的异常:在运行时发生。如window.yangaiyou();语法正确,但会发生异常。

l         onerror对象:在window对象和图象对象?上都有onerror事件处理函数,当页面发生错误时,onerror事件将在window对象上触发。当页面上的图象不能载入时会在image对象上触发。

可以这样定义onerror函数

window.onerror = function(sMessage,sUrl,sLine){};

onerror函数的三个参数用于确定错误确切的信息,代表的意思依次为:错误信息;发生错误的文件;发生错误的行号。

l         Try...catch语句:

Catch语句捕获的是一个Error对象,他有namemessage属性,name指明错误的类型或叫名字;message指明具体的错误信息。

也可以用类似throw new Error(“发生了错误!”)的语句来抛出异常信息。

第十五章 javascript中的XML


l        
IE中对XML DOM的支持:是基于ActiveXMXXML库。用ActiveXObject类来创建ActiveX对象,形如

Var oXmlDom = new ActiveXObject(“Microsoft.XmlDom”);

参数为要实例化的ActiveX对象的字符串代号。

如何确保使用最新的XML DOM

创建XML DOM 对象的下一步自然就是载入XML文件,XML DOM提供了两种方法来载入XML文件:load()loadXML()。前者用于从服务器端载入XML文件;后者可以直接输入字符串来载入。如:

oXmlDom.load(“./treeAction.do”);

执行完这行代码oXmlDom对象就会包含能表示XML文件结构的一个DOM文挡,这样就可以使用DOM所有的特性和方法了。

默认采用异步方式载入,当readyState值发生变化时会触发onreadystatechange函数,当其值为4时表示XML文件已完全载入,通常这时就要调用回调函数。

我们应该在XML文件载入后立即检查错误,错误信息都包含在parseError对象中,我们可以自己创建错误提示,通常是由于XML文件格式错误造成的。

AJAX必备知识。

l         xPath小语言:

它提供了如何定位一个或多个结点的功能。它分两部分:上下文结点;结点模式。前者给出要匹配文档的开始位置;后者是一个字符串形式的选择器,可以想象成正则表达式。

IE中提供selectNodes()方法来返回匹配的结点集合,参数为要匹配的字符串(正则表达式)。形如:

oXmlDom.documentElement.selectNodes(“employee/name”);

选择了所有<employee/>元素下的<name/>元素。

l         XSLT 可扩展样式表语言转换:

XSLT可以对XML文件进行操作,将其转换成其他的文本格式,入HTMLXSLT文件称为样式表,由一些模板组成,通过为不同元素和条件定义模板,XSLT成了XML文件的转换器。

第十六章 客户端与服务器端的通信

第十七章 Web服务

第十八章 与插件进行交互

第十九章 部署问题

第二十章 JS的文莱

posted on 2007-07-01 13:50 杨爱友 阅读(1942) 评论(10)  编辑  收藏 所属分类: java相关技术

FeedBack:
# re: javascript读书笔记 2007-07-03 11:25 飘摇
第一页有个错别字  回复  更多评论
  
# re: javascript读书笔记 2007-07-03 11:31 飘摇
终于走向正路,哈哈 继续努力!  回复  更多评论
  
# re: javascript读书笔记 2007-07-03 12:23 
哪个字错了里,给我改过来。  回复  更多评论
  
# re: javascript读书笔记 2007-07-04 08:55 飘摇
写本*问*的目的是对最近看过的篇幅进行简单的总结,"问"对吗  回复  更多评论
  
# re: javascript读书笔记 2007-07-04 16:57 飘摇
打开一个网页时 总是不断的跳出好多网页,但是没死机,这是为什么 ,该怎么办  回复  更多评论
  
# re: javascript读书笔记 2007-07-04 17:02 
或者装个拦截工具,或者叫他们网站的开发者把代码改一下,后者比较好,哈哈~~  回复  更多评论
  
# re: javascript读书笔记[未登录] 2007-07-06 16:05 小祝
呵呵~记得8号来接我哈~~  回复  更多评论
  
# re: javascript读书笔记 2007-07-06 16:24 
尽量吧,单愿没有忘记,哈哈  回复  更多评论
  
# re: javascript读书笔记 2007-10-26 08:16 fds
fdsgfds  回复  更多评论
  
# re: javascript读书笔记 2008-01-15 09:52 小吴
严重支持!!!写的很好!!!可见有一定的基础!!但是进步的空间还很大!!
建议尝试自己写一个小框架(对提高设计能力有很大的帮助)  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 
美丽涵涵童装店
亲,说我博客名字,给你们打折!