《JavaScript入门经典》studyNote
对于javascript初学者,或者是和我一样不是很精通的人,我极力推荐这本书。你可以把它当作一本教材,或者是参考手册,也可以只是随手翻翻。该书详细的介绍了关于javascript的一切,从起源到未来,从语法到脚本,从内置对象到第三方库,从编码习惯到测试工具,从DHTML到AJAX,作者甚至还饶有兴趣的介绍了FF下的Greasemonkey插件。果然在计算机图书这块,国内与国外不单单只是一个技术差距的问题,可能还有知识传授方式的差异。
本书用到的示例代码可以从这里下载:
http://www.samspublishing.com/bookstore/product.asp?isbn=0672328798&rl=1#info3
摘录本书可能对我有用的部分内容:
————Document对象————
document.URL 获取文档的URL地址,只读,若要指定不同地址,可使用window.location对象。
document.title 列出由HTML中的<title>定义的页面标题,可写。
document.referrer 用户来到此页的来源页。注:该值需要http://访问才能获得,且区分字母大小写。
document.lastModified 返回文档最后修改日期时间。
document.links.length 返回页面中链接的数量
document.anchors.length 返回页面中锚点数量
————Location对象————–
window.location.href 改变该属性值可以改变当前窗口URL。
location.reload() 刷新当前文档,传入参数true将忽略缓存强制刷新当前文档。
location.replace() 替换当前页到指定地址,且替换当前页在浏览器历史中的记录。
————String对象—————–
toUpperCase() 将所有字符转化为大写
toLowerCase() 将所有字符转化为小写
substring(a,b) 该方法返回的是从a(a,b为字符串索引,包括a)到b(不包括b)间的字符串
charAt(a) 该方法返回字符串的第a个字符
indexOf("this",2) 从第2个字符处开始搜索该字符串中是否包含"this",返回的是找到的索引值,没有则返回-1
lastIndexOf() 方法同上,从字符串尾向前搜索。
split(" ") 将该字符串在每个空格处分开,返回数组
join(" ") 与split相反
replace("a","b") 将字符串中的a替换成b
————-Math对象—————–
Math.ceil() 将一个数字向上舍入到上一个整数
Math.floor() 向下舍入
Math.round() 将一个数字舍入到最接近的整数
Math.random() 返回0至1之间的随机小数
————-Date对象—————–
setDate(),getDate(),getUTCDate(),setUTCDate()
setMonth(),0-11表示月份
setFullYear()
setTime(),从1970年1月1日起算的毫秒数值
setHours、setMinutes()、setSeconds()、getMilliseconds()
setDay()
getTimezoneOffset(),方法返回一个整数值,表示当前计算机时间和 UTC 时间相差的分钟数,负值表示早于UTC时间
toUTCString(),使用UTC把date对象时间值转换成文本
toLocalString(),使用本地时间把date对象时间值转换成文本
Date.parse()把日期字符串转换成一个Date对象(从1970年1月1日起算的毫秒数值)
Date.UTC()把Date对象值转换成UTC(GMT)时间
————-自定义对象—————-
function CallName() {
alert(this.name);
}
function Card(name,address) {
this.name = name;
this.address = address;
this.CallName = CallName;
}
myCard = new Card("catge","HUST");
myCard.address = "Wuhan";
myCard.CallName();
————-扩展内置对象—————
function saidBy(name) {
alert(name +":"+ this);
}
String.prototype.saidBy = saidBy;
"hehe".saidBy("catge");
————-with关键字—————–
with关键字指定一个对象,后面大括号中的语句块中没有指定对象的属性都将被假定为该对象属性。例如对字符串lastname而言:
with(lastname) {
window.alert("length:"+ length);
capname = toUpperCase();
}
————-for—in循环—————-
for(i in navigator){
alert(navigator[i]);
}
用来执行对一个对象的每个属性进行运算
————-第三方程序库—————–
Prototype http://prototype.conio.net
Script.aculo.us
SAJAX http://www.modernmethod.com/sajax
Dojo http://www.dojotoolkit.org
Yahoo! UI Library http://developer.yahoo.net/yui
MochiKit http://mochikit.com
————–IE与FF的event属性————
event.button 鼠标左键值为1,右键值为2(event.button左键为0,右键为2)
event.clientX 事件发生位置的x轴坐标(event.pageX元素左上角为基点,而非鼠标实际地点)
event.clientY 事件发生位置的y轴坐标(event.pageY)
event.altkey 表示是否按下了Alt键(event.modifiers表示事件发生时按下了哪个修饰键,返回值为不同键的二进制的组合)
event.ctrlkey 表示是否按下了Ctrl键
event.shiftkey 表示是否按下了Shift键
event.keyCode 所按键的键码(event.which用Unicode表示,可使用String方法转换它)
Key = String.fromCharCode(event.which)
event.srcElement 元素出现的对象(event.target)
function hover(e) {
if(!e) var e = window.event;
whichlink = (e.target)?e.target.id:e.srcElement.id;
…
}
————————————————–
1、不能在onload事件处理程序中使用document.write(或document.open)语句,否则会覆盖当前文档
2、添加noscript标签内容,或者为支持javascript的用户添加某些可以继续操作的事件。
3、推荐两款不错的软件:
javascript调试工具
Web Developer(用于Firefox)
http://chrispederick.com/work/web-developer/
IE的Turnabout插件,允许用户对特定网站进行JS脚本订制
http://www.reifysoft.com/turnabout.php