JS知识点.docx
《JS知识点.docx》由会员分享,可在线阅读,更多相关《JS知识点.docx(30页珍藏版)》请在冰豆网上搜索。
JS知识点
变量命名
变量名称是一个标识符。
Jscript中,用标识符来:
命名变量,命名函数,给出循环的标签。
JScript是一种区分大小写的语言。
因此变量名称myCounter和变量名称mYCounter是不一样的。
变量的名称可以是任意长度。
创建合法的变量名称应遵循如下规则:
第一个字符必须是一个ASCII字母(大小写均可),或一个下划线(_)。
注意第一个字符不能是数字。
后续的字符必须是字母、数字或下划线。
变量名称一定不能是保留字。
注意在JScript中null和undefined的主要区别是null的操作象数字0,而undefined的操作象特殊值NaN(不是一个数字)。
对null值和undefined值作比较总是相等的。
可以不用var关键字声明变量,并赋值。
这就是隐式声明
Jscript有三种主要数据类型、两种复合数据类型和两种特殊数据类型。
主要(基本)数据类型是:
字符串数值布尔
复合(引用)数据类型是:
对象数组
特殊数据类型是:
NullUndefined
整型值可以是正整数,负整数和0。
可以用10进制,8进制和16进制来表示。
在Jscript
中大多数字是用十进制表示的。
加前缀“0”表示8进制的整型值,只能包含0到7的数字。
前缀为“0”同时包含数字“8”或“9”的数被解释为十进制数。
加前缀“0x”(零和x|X)表示16进制整型值。
可以包含数字0到9,以及字母A到F(大写或小写)。
使用字母A到F表示十进制10到15的单个数字。
就是说0xF与15相等,同时0x10等于16。
JScript提供了一种特别的循环方式来遍历一个对象的所有用户定义的属性或者一个数组的所有元素。
for...in循环中的循环计数器是一个字符串,而不是数字。
它包含当前属性的名称或者当前数组元素的下标。
下面的代码范例应在Internet浏览器中运行,因为它使用alert方法,该方法不属于Jscript。
//创建具有某些属性的对象
varmyObject=newObject();
myObject.name="James";
myObject.age="22";
myObject.phone="5551234";
//枚举(循环)对象的所有属性
for(propinmyObject)
{
//显示"Theproperty'name'isJames",等等。
window.alert("Theproperty'"+prop+"'is"+myObject[prop]);
}
Jscript支持两种函数:
一类是语言内部的函数,另一类是自己创建的
特殊的内部函数
Jscript语言包含很多内部函数。
某些函数可以操作表达式和特殊字符,而其他函数将字符串转换为数值。
一个有用的内部函数是eval()。
该函数可以对以字符串形式表示的任意有效的Jscript代码求值。
eval()函数有一个参数,该参数就是想要求值的代码。
下面给出一个使用本函数的示例。
varanExpression="6*9%7";
vartotal=eval(anExpression);//将变量total赋值为5。
Jscript支持四种类型的对象:
内部对象、生成的对象、宿主给出的对象(如Internet浏览
器中的window和document)以及ActiveX对象(外部组件)。
内部对象
MicrosoftJscript提供了11个内部(或“内置”)对象。
它们是Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、Error以及String对象
Math对象
Math对象有许多预定义属性和方法。
属性是特殊的数字。
这些特殊的数字之一是pi值(近似3.14159…)。
这是Math.PI属性,如下例所示。
//声明一个半径变量并赋数值。
varcircleArea=Math.PI*radius*radius;//注意Math和PI大写。
Math对象的一个内置方法是乘幂方法(或pow),使用该方法求得指定数的幂次。
下面的例子同时使用了pi和乘幂。
//本公式计算给定半径的球体的体积。
volume=(4/3)*(Math.PI*Math.pow(radius,3));
vartoDay=newDate();//获取今天的日期。
//提取年,月,日。
varthisYear=toDay.getFullYear();
varthisMonth=theMonths[toDay.getMonth()];
varthisDay=thisMonth+""+toDay.getDate()+","+thisYear;
5Number对象
除了Math对象中可用的特殊数值属性(例如PI)外,在MicrosoftJscript中,Number对象有几个其他的数值属性。
属性
描述
MAX_VALUE
可能的最大数大约为1.79E+308;可以是正数或负数。
(具体数值随系统不同而有微小差别。
)
MIN_VALUE
可能的最小数大约为2.22E-308;可以是正数或负数。
(具体数值随系统不同而有微小差别。
)
NaN
特殊非数量值,“不是数值”。
POSITIVE_INFINITY
比最大正数(Number.MAX_VALUE)还要大的任意正值自动被转换为此值,代表正无穷大。
NEGATIVE_INFINITY
比最小的负数(负的Number.MAX_VALUE)还小的任意值被自动转换为此值,代表负无穷。
6特殊字符
JScript提供了一些特殊字符,允许在字符串中包括一些无法直接键入的字符。
每个字符都以反斜杠开始。
反斜杠是一个转义字符,表示JScript解释器下面的字符为特殊字符。
转义序列
字符
\b
退格
\f
走纸换页
\n
换行
\r
回车
\t
横向跳格(Ctrl-I)
\'
单引号
\"
双引号
\\
反斜杠
7使用警告、提示和确认
可以使用警告、确认和提示消息框来获得用户的输入。
这些消息框是window对象的接口方法。
由于window对象位于对象层次的顶层,因此实际应用中不必使用这些消息框的全名(例如"window.alert()"),不过采用全名是一个好注意,这样有助于您记住这些消息框属于哪个对象。
警告消息框
alert方法有一个参数,即希望对用户显示的文本字符串。
该字符串不是HTML格式。
该消息框提供了一个“确定”按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说,用户必须先关闭该消息框然后才能继续进行操作。
window.alert("欢迎!
请按“确定”继续。
");
确认消息框
使用确认消息框可向用户问一个“是-或-否”问题,并且用户可以选择单击“确定”按钮或者单击“取消”按钮。
confirm方法的返回值为true或false。
该消息框也是模式对话框:
用户必须在响应该对话框(单击一个按钮)将其关闭后,才能进行下一步操作。
vartruthBeTold=window.confirm("单击“确定”继续。
单击“取消”停止。
");
if(truthBeTold){
window.alert("欢迎访问我们的Web页!
");
}elsewindow.alert("再见啦!
");
提示消息框
提示消息框提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。
该消息框有一个“确定”按钮和一个“取消”按钮。
如果您提供了一个辅助字符串参数,则提示消息框将在文本字段显示该辅助字符串作为默认响应。
否则,默认文本为""。
与alert( )和confirm( )方法类似,prompt方法也将显示一个模式消息框。
用户在继续操作之前必须先关闭该消息框
vartheResponse=window.prompt("欢迎?
","请在此输入您的姓名。
");
JScript函数:
GetObject函数
从文件中返回对Automation对象的一个引用。
GetObject([pathname][,class])
参数
pathname
可选项。
完整的文件路径和名称,文件中包含了要检索的对象。
如果忽略了pathname,那么需要class。
class
可选项。
对象的类。
类参数采用的语法是appname.objectype,包括了以下部分:
appname
必选项。
提供对象的应用程序名称。
objectype
必选项。
要创建的对象的类的类型。
说明
使用GetObject函数可以从文件中访问一个Automation对象。
可以将由GetObject返回的对象赋值给对象变量。
例如:
varCADObject;
CADObject=GetObject("C:
\\CAD\\SCHEMA.CAD");
在执行这段代码时,将启动与指定的pathname相关的应用程序,所指定文件中的对象将被激活。
如果pathname是长度为零的字符串(""),那么GetObject将返回指定类型的一个新实例。
如果忽略了pathname参数,那么GetObject将返回指定类型的当前活动实例。
如果不存在指定类型的对象,那么将出错。
一些应用程序允许激活文件的一部分。
要实现此功能,可以在文件名的尾部添加一个感叹号(!
),然后在感叹号后跟上一个字符串来指定要激活的文件部分。
关于如何创建这个字符串的详细信息,请参阅创建该对象的应用程序的文档。
例如,在一个绘画应用程序中,可能在文件中存储了绘画的很多层次。
可以使用下面的代码激活名为SCHEMA.CAD的图画中的一层。
varLayerObject=GetObject("C:
\\CAD\\SCHEMA.CAD!
Layer3");
如果没有指定对象的类,Automation将根据所提供的文件名来决定要启动的应用程序和要激活的对象。
但是,一些文件可能支持不止一种对象的类。
例如,一个图画可能支持三种不同的对象类型:
应用程序对象、绘画对象,以及工具栏对象,所有这些都是同一个文件中的部分。
要指定文件中希望激活的对象,可以使用可选的class参数。
例如:
varMyObject;
MyObject=GetObject("C:
\\DRAWINGS\\SAMPLE.DRW","FIGMENT.DRAWING");
在前面的例子中,FIGMENT是绘画应用程序的名称,而DRAWING是它支持的一种对象类型。
对象被激活后,可以使用定义的对象变量来引用它。
在前面的例子中,可以通过对象变量MyObject来访问新对象的属性和方法。
例如:
MyObject.Line(9,90);
MyObject.InsertText(9,100,"Hello,world.");
MyObject.SaveAs("C:
\\DRAWINGS\\SAMPLE.DRW");
注意如果当前已经有了对象的实例,或者想要由已经加载了的文件创建对象,那么可以使用GetObject函数。
如果没有当前的实例,而且也不想由已经加载的文件来启动对象,那么可以使用ActiveXObject对象。
方法:
abs方法返回数字的绝对值。
Math.abs(number)
必选项number参数是要需要计算绝对值的数值表达式。
说明:
返回的值是number参数的绝对值。
示例:
下面的例子演示了abs方法的用法。
functionComparePosNegVal(n)
{
vars;
varv1=Math.abs(n);
varv2=Math.abs(-n);
if(v1==v2)
s=n+"和"
s+=-n+"的绝对值是相同的。
";
return(s);
}
acos方法返回数的反余弦值。
Math.acos(number)
必选项number参数是需要计算反余弦值的数值表达式。
说明:
返回值为number参数的反余弦值。
anchor方法
在对象中的指定文本两端放置一个有NAME属性的HTML锚点。
strVariable.anchor(anchorString)
参数:
strVariable必选项。
任意的String对象或文字。
anchorString必选项。
想放在HTML锚点的NAME属性中的文本。
说明:
调用anchor方法来在String对象外创建一个命名的锚点。
下面示例说明了anchor方法是如何实现这个的:
varstrVariable="Thisisananchor";
strVariable=strVariable.anchor("Anchor1");
执行完最后一条语句后strVariable的值为:
Thisisananchor
不检查该标记是否已经被应用于该字符串。
apply方法应用某一对象的一个方法,用另一个对象替换当前对象。
apply([thisObj[,argArray]])
参数:
thisObj可选项。
将被用作当前对象的对象。
argArray可选项。
将被传递给该函数的参数数组。
说明:
如果argArray不是一个有效的数组或者不是arguments对象,那么将导致一个TypeError。
如果没有提供argArray和thisObj任何一个参数,那么Global对象将被用作thisObj,并且无法被传递任何参数。
asin方法返回数字的反正弦值。
Math.asin(number)
必选项number参数是需要计算反正弦的数值表达式。
说明:
返回值为数字参数的反正弦值。
atan2方法返回由X轴到(y,x)点的角度(以弧度为单位)。
Math.atan2(y,x)
参数:
x必选项。
描述笛卡儿x坐标的数值表达式。
y必选项。
描述笛卡儿y坐标的数值表达式。
说明:
返回值在-pi和pi之间,表示提供的(y,x)点的角度。
atEnd方法返回一个Boolean值,指明枚举算子是否位于集合的末尾。
myEnum.atEnd()必选项myEnum参数是任意Enumerator对象。
说明:
如果当前项是集合中的最后一个,或者集合为空,或者当前项没有定义,那么atEnd方法将返回true。
否则返回false。
示例:
在下面的代码中,使用了atEnd方法来决定是否到达了一个驱动器列表的末尾:
functionShowDriveList(){
varfso,s,n,e,x;
fso=newActiveXObject("Scripting.FileSystemObject");
e=newEnumerator(fso.Drives);
s="";
for(;!
e.atEnd();e.moveNext())
{
x=e.item();
s=s+x.DriveLetter;
s+="-";
if(x.DriveType==3)
n=x.ShareName;
elseif(x.IsReady)
n=x.VolumeName;
else
n="[驱动器未就绪]";
s+= n+"
";
}
return(s);
}
big方法把HTML标记放置在String对象中的文本两端。
strVariable.big()必选项strVariable参数可以是任意的String对象或文字。
说明:
下面示例说明了big方法是如何工作的:
varstrVariable="Thisisastringobject";
strVariable=strVariable.big( );
在执行完最后一个语句后,strVariable的值为:
Thisisastringobject
不检查该标记是否已经被应用于该字符串了。
bold方法把HTML标记放置在String对象中的文本两端。
strVariable.bold()
必选项strVariable参数可以是任意的String对象或文字。
说明:
下面的示例说明了bold方法是如何工作的:
varstrVariable="Thisisastringobject";
strVariable=strVariable.bold( );
最后一条语句执行完后,strVariable的值是:
Thisisastringobject
不检查该标记是否已经被应用于该字符串了。
call方法调用一个对象的一个方法,以另一个对象替换当前对象。
call([thisObj[,arg1[,arg2[, [,.argN]]]]])
参数:
thisObj可选项。
将被用作当前对象的对象。
arg1,arg2, ,argN可选项。
将被传递方法参数序列。
说明:
call方法可以用来代替另一个对象调用一个方法。
call方法可将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象。
如果没有提供thisObj参数,那么Global对象被用作thisObj。
ceil方法返回大于等于其数字参数的最小整数。
Math.ceil(number)
必选项number参数是数值表达式。
说明:
返回值为大于等于其数字参数的最小整数。
charAt方法返回指定索引位置处的字符。
strObj.charAt(index)
参数:
strObj必选项。
任意String对象或文字。
index必选项。
想得到的字符的基于零的索引。
有效值是0与字符串长度减1之间的值。
说明:
charAt方法返回一个字符值,该字符位于指定索引位置。
字符串中的第一个字符的索引为0,第二个的索引为1,等等。
超出有效范围的索引值返回空字符串。
示例:
下面的示例说明了charAt方法的用法:
functioncharAtTest(n){
varstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ";//初始化变量。
vars;//声名变量。
s=str.charAt(n-1);//从索引为n–1的位置处
//获取正确的字符。
return(s);//返回字符。
}
charCodeAt方法返回一个整数,代表指定位置上字符的Unicode编码。
strObj.charCodeAt(index)
参数:
strObj必选项。
任何String对象或文字。
index:
必选项。
将被处理的字符的从零开始计数的编号。
有效值为0到字符串长度减1的数字。
说明:
一个字符串中的第一个字符编号为0,第二个字符编号为1,依此类推。
如果指定位置没有字符,将返回NaN。
示例:
以下示例阐明了charCodeAt方法的用法。
functioncharCodeAtTest(n){
varstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ";//初始化变量。
varn;//声明变量。
n=str.charCodeAt(n-1);//获取位置n上字符的Unicode值。
return(n);//返回该值。
}
compile方法把正则表达式编译为内部格式,从而执行得更快。
rgEpile(pattern,[flags])
参数:
rgexp必选项。
正则表达式对象的一个例子。
可以是变量名或文字。
pattern:
必选项。
字符串表达式,它包含要被编译的正则表达式模式。
flags:
可选项。
可以组合使用,可用的标志有:
g(全局搜索所有存在的pattern)i(忽略事件)m(多行搜索)
说明:
compile方法把pattern转换为内部的格式,从而执行得更快。
例如,这使得可以在循环中更有效地使用正则表达式。
当重复使用相同的表达式,那么编译过的正则表达式使执行加速。
然而,如果正则表达式改变了,这种编译毫无益处。
示例:
下面的例子举例说明了compile方法的用法:
functionCompileDemo(){
varrs;
vars="AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp"
//只为大写字母创建正则表达式。
varr=newRegExp("[A-Z]","g");
vara1=s.match(r)//查找匹配。
//只为小写字母编译正则表达式。
pile("[a-z]","g");
vara2=s.match(r)//查找匹配。
return(a1+"\n"+a2;
}
concat方法(Array)返回一个新数组,这个新数组是由两个或更多数组组合而成的。
array1.concat([item1[,item2[,...[,itemN]]]])
参数:
array1必选项。
其他所有数组要进行连接的Array对象。
item1,...,itemN可选项。
要连接到array1末尾的其他项目。
说明:
concat方法返回一个Array对象,其中包含了array1和提供的任意其他项目的连接。
要加的项目(item1…itemN)会按照从左到右的顺序添加到数组。
如果某一项为数组,那么添加其内容到array1的末尾。
如果该项目不是数组,就将其作为单个的数组元素添加到数组的末尾。
以下为从源数组复制元素到结果数组:
对于从正被连接到新数组的数组中复制的对象参数,复制后仍然指向相同的对象。
不论新数组和源数组中哪一个有改变,都将引起另一个的改变。
对于连接到新数组的数值或字符串,只复制其值。
一个数组中值有改变并不影响另一个数组中的值。
示例:
下面这个例子说明了使用数组时concat方法的用法:
functionConcatArrayDemo(){