每次刚开始学语言时,作者都喜欢用“hello world”例子l来侮辱我们的智商,我想大家都不是笨蛋,故而寥寥数笔写了一点
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<title>Document.writeln()方法title>
<script language="javascript">
function createsummary()
{
win2=open("","window2")
//win2.document.open("text/plain")
win2.document.writeln("title"+document.title)
win2.document.close()
}
script>
head>
<body>
<a name="#top">a>
<form>
<input type="button" name="help" value="help"onClick="createsummary()">
form>
<body>
html>
说一下知识要点吧:
1:JavaScript是一种区分大小写的语言。
2:建议每写一行要用‘;';
3:命名第一个字母必须是字母、下划线或‘$';
4:在JavaScript中声明变量用var,而且是永久性的;
5:没有块级作用域。例如:
Var scope="globle";
function f(){
alert(scope); //显示“underfined"而不是"globle"
Var scope="local";
alert(scope);
}
F();
与下面的代码实例意义相同
Var scope="globle";
function f(){
Var scope;
alert(scope); //显示“underfined"而不是"globle"
Var scope="local";
alert(scope);
}
F();
建议:将所有的变量声明集中起来放置在函数的开头是一个很好的编程习惯。
6:ECMAScript标准中规定函数不能重载,例如
function doadd(i){
alert(i);
}
function doadd(i){
alert(i);
}
doadd(10);
真正执行的是后一个函数,第二个覆盖了第一个函数;
7:arguments对象的使用。
function doAdd()
If(arguments.length==1){
alert(arguments[0]+10);
}
If(arguments.length==2){
alert(arguments[0]+arguments[0);
}
doAdd(10);
doAdd(10,20);
运行效果:略……
8:JavaScript的数组使用方法
1.join()
array.join把array的所有elements转换成String,再将其join,可指定可选的String分隔element,默认为","
var a = [1,2,3];
var s = a.join(); ==> s="1,2,3"
s = a.join(","); ==> s="1, 2, 3" !结果稍有不同
array.join()与String.split()相反(分割String成几片而构建Array)
2.reverse()
array.reverse()颠倒array elements的顺序并返回颠倒后的array,在原array上执行操作
var a = new Array(1,2,3); ==> a[0] =1, a[1] = 2, a[3] = 3
a.reverse(); ==> a[1] = 3, a[2] = 2, a[3] = 1
var s = a.join(); ==>s = "3,2,1"
3.sort()
array.sort()在原array上对elements排序,返回排序后的array,默认按字母排序,否则应该传比较函数做为sort()参数
var a = new Array("A", "C", "B");
a.sort();
var s = a.join("/"); ==>s = "A/ B/ C";
var a = [1, 3, 4];
a.sort(
function(a,b)
{
return a - b;
}
) ; ==>按<0,0,>0返回 1, 3, 4
toLowerCase(), toUpperCase()转换字母大小写
4.concat()
create, and return array 包含调用concat()的原array中的elements, 其后是concat()参数,若为array将被展开
但不能递归展开
var a = [1,2,3];
a.concat(4,5); ==>[1,2,3,4,5]
a.concat([4,5], [6,7]); ==>[1,2,3,4,5,6,7]
a.concat(4, [5, [6, 7]]); ==>[1,2,3,4,5,[6,7] ]
5.slice()
array.slice() return指定array的一个slice, 两参数指定要返回片断的起止,返回array含一参但不含二参
若只有一参无二参,返回由一参起其后所有的elements,若有一参为负是相对array最后的element而言的
-1指定array最后一个elements, -3指定array的最后一个element起,倒数第3个elment
var a = [1,2,3,4,5];
a.slice(0,3); ==>[1,2,3]
a.slice(3); ==>[4,5]
a.slice(1,-1); ==>[2, 3, 4]
a.slice(-3, -2); ==>[3]
6.splice()
array.splice()是insert或delete或同时insert delete elements通用method,在原array上修改,位于被insert or delete后的elements会必要地移动,
前两参指delete其中的参一指定要删除element在array中的location,参二指定要删除的个数此两参后可有N参,指定要从参一指定的location处开始插入的elements
var a = [1,2,3,4,5,6,7,8]
var a.splice(4); ==>return[5,6,7,8] a=[1,2,3,4]
a.splice(1,2); ==>return[2,3] a=[1,4]
a.splice(1,1); ==>return[4] a=[1]
var a = [1,2,3,4,5]
a.splice(2,0,'a','b'); ==>返回[] a =[1,2,'a','b',3,4,5]
a.splice(2,2,[1,2},3); ==>返回['a','b'] a =[1,2,3,[1,2],3,3,4,5]
7.push() pop()
像stack()一样使用array, 在原数组上修改,FILO(first in last out)push()将多个elements附加到array尾部,return新array长度pop()相反删除array最后一element,减array()长度,return被删值
var stack = [];
stack.pust(1,8); ==>[1,8] return 2
stack.pop(); ==>[1] return 8
stack.push(3); ==>[1,3] return 2
stack.pop(); ==>[1] return 3
stack.push(); ==>[1,[4,5] ] return 2
stack.pop(); ==>[1] return [4,5]
stack.pop(); ==>[] return [1]
8.unshift() shift()
与push() pop()相似 只是在array的头部进行insert delete 而非在尾部unshift()return新array length, insert N个elements的时候是一次性被insert的shift()return新array第一个element
var a = [];
a.unshift(1); ==>a:[1] return 1
a.unshift(22); ==>a:[22,1] return 2
a.shift(); ==>a:[1] return22
a.unshift(3, [4,5]); ==>a:[3,[4,5]],1] return 3
a.shift() ==>a:[[4,5], 1] return 3
a.shift() ==> a:[1] return[4,5]
a.shift() ==>a:[] return 1
9.toString() toSurce()
[1,2,3].toString(); ==>"1,2,3"
['a', "b", "c"].toString(); ==>"a,b,c"
[1,[2.'c']].toString(); ==>"1,2,c"
toLocaleString()是toString的局部化版本,它将调用每个元素的toLocaleString()方法将array elements转为String。后将生成的String用局部特定(和定义的实现)的分隔符将String连接起来
9:
Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在。如果尝试编写下面的代码,将得到错误:
错误消息显示Global不是对象,但刚才不是说Global是对象吗?没错。这里需要理解的主要概念是,在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。本书前面介绍的函数,如isNaN()、isFinite()、parseInt()和parseFloat()等,看起来都像独立的函数。实际上,它们都是Global对象的方法。而且Global对象的方法不止这些。
encodeURI()和encodeURIComponent()方法用于编码传递给浏览器的URI(统一资源标识符)。有效的URI不能包含某些字符,如空格。这两个方法用于编码URI,这样用专门的UTF-8编码替换所有的非有效字符,就可以使浏览器仍能够接受并理解它们。
encodeURI()方法用于处理完整的URI(例如,http://www.php.cn/ value.htm),而encodeURIComponent()用于处理URI的一个片断(如前面的URI中的illegal value.htm)。这两个方法的主要区别是encodeURI()方法不对URI中的特殊字符进行编码,如冒号、前斜杠、问号和英镑符号,而encodeURIComponent()则对它发现的所有非标准字符进行编码。例如:
这段代码输出两个值:
可以看到,除空格外,第一个URI无任何改变,空格被替换为%20。第二个URI中的所有非字母数字字符都被替换成它们对应的编码,基本上使这个URI变得无用。这就是encodeURI()可以处理完整URI,而encodeURIComponent()只能处理附加在已有URI末尾的字符串的原因。
自然,还有两个方法用于解码编码过的URI,即decodeURI()和decodeURIComponent()。如你所料,这两个方法所做的恰与其对应的方法相反。decodeURI()方法只对用encodeURI()方法替换的字符解码。例如,%20将被替换为空格,而%23不会被替换,因为它表示的是英镑符号(#),encodeURI()并不替换这个符号。同样的,decodeURIComponent()会解码所有encodeURIComponent()编码过的字符,意味着它将对所有的特殊值解码。例如:
这段代码输出两个值:
在这个例子中,变量uri存放的是用encodeURIComponent()编码的字符串。生成的值说明了应用两个解码方法时会发生的事情。第一个值由decodeURI()输出,把%20替换成空格。第二个值由decodeURIComponent()输出,替换所有的特殊。
最后一个方法可能是整个ECMAScript语言中最强大的方法,即eval()方法。该方法就像整个ECMAScript的解释程序,接受一个参数,即要执行的ECMAScript(或JavaScript)字符串。例如:
这行代码的功能等价于下面的代码:
当解释程序发现eval()调用时,它将把参数解释为真正的ECMAScript语句,然后把它插入该函数所在的位置。这意味着eval()调用内部引用的变量可在参数以外定义:
这里,变量msg是在eval()调用的环境外定义的,而警告仍然显示的是文本"hello world",因为第二行代码将被替换为一行真正的代码。同样,可以在eval()调用内部定义函数或变量,然后在函数外的代码中引用:
这里,函数sayHi()是在eval()调用内部定义的。因为该调用将被替换为真正的函数,所以仍可在接下来的一行中调用sayHi()。
Global对象不只有方法,它还有属性。还记得那些特殊值undefined、NaN和Infinity吗?它们都是Global对象的属性。此外,所有本地对象的构造函数也都是Global对象的属性。
10;
open(URL,WindowName,parameterList):open方法创建一个新的浏览器窗口,并在新窗口中载入一个指定的URL地址。
close():close方法关闭一个浏览器窗口.
alert(text):弹出一个信息框.
confirm(text):弹出一个确认框.
prompt(text,Defaulttext):弹出一个提示框.
setTimeout(expression,time):定时设置,在一定时间后自动执行expression描述的代码,使用time设置时间,单位是毫秒.
clearTimeout(timer):取消以前的定时设置.
back():指示浏览器载入历史记录中的上一个URL地址.
forward():指示浏览器载入历史记录中的下一个URL地址.
stop():指示浏览器停止网页的装载.
location:提供当前窗口的URL信息
(expression,time):定时设置,在一定时间后自动执行expression描述的代码,使用time设置时间,单位是毫秒.>