当前位置:文档之家› JavaScript实验

JavaScript实验

实验项目:浏览器脚本语言及其应用实验类型:设计实验课时:4实验目的:研究javascript及其应用实验方案:1 研究将JavaScript引入HTML页面创建一个HTML文件,容如下。

在浏览器中打开该文件。

分析代码。

<script type="text/javascript">alert("嵌JavaScript代码");</script><script type="text/javascript" src="a.js"><!-- 引入js文件 -->alert("引入js文件的script元素中的嵌代码不会执行");</script><script type="text/javascript" src="a.js" /><!-- 错误,必须使用结束标签 --><noscript>不支持JavaScript时的提示</noscript><div onclick="alert('事件句柄属性值中的Javascript代码')">点我</div>2 研究JavaScript的执行时序创建一个HTML文件,容如下。

在浏览器中打开该文件。

分析代码。

<script type="text/javascript">window.onload=function(){alert(1);};//文档装载完成时执行onload=function(){alert(2);}; //省略顶层对象名,覆盖上一次赋值</script><body onload="alert(3) "><!--chrome在window.onload后执行,如果JS的onload代码在其后则会覆盖--><!--IE覆盖window.onload,如果JS的onload代码在其后则会覆盖--><button onclick="alert(4)">按钮单击事件</button></body>3 研究JavaScript名称创建一个HTML文件,容如下。

在浏览器中打开该文件。

分析代码。

<script type="text/javascript">var a=1;//定义变量,当前对象为window,所以a也是window的属性b=2;//window对象的属性{var c=3;}//{}不构成作用域,所以c仍是window的属性d(7,8);//函数名可以先调用,后定义alert("函数外:"+a+b+c+e+g.h+g.i+g.j);function d(x,y){//函数构成作用域e=x;//window对象的属性var f=y;//定义局部变量g={h:4,i:5};//对象与对象属性g.j=6;//对象属性alert("函数中:"+a+b+c+e+f+g.h+g.i+g.j);}</script>3 研究JavaScript值创建一个HTML文件,容如下。

在浏览器中打开该文件。

分析代码。

<script type="text/javascript">//alert(a);//错误,a is not definedalert(typeof a);//typeof运算符可用于未定义的变量var a;//定义变量alert(a);//输出undefinedalert(typeof a);//输出undefineddelete a;//删除变量//alert(a);//错误,a is not definedalert(typeof a);//输出undefineda=undefined;//赋值为undefinedalert(a);//输出undefinedalert(typeof a);//输出undefineda={};//赋值为对象字面量alert(a);//输出[object Object]alert(typeof a);//输出objectalert(a.b);//输出undefined,属性未定义可访问alert(typeof a.b);//输出undefineda=null;//赋值为空对象alert(a);//输出nullalert(typeof a);//输出objecta=[];//赋值为数组字面量alert(a);//输出空字符串alert(typeof a);//输出objecta=function(){};//赋值为函数字面量alert(a);//输出a=function(){}alert(typeof a);//输出function</script>4 研究访问对象和数组的成员创建一个HTML文件,容如下。

在浏览器中打开该文件。

分析代码。

<script type="text/javascript">a={a:1,b:2};//赋值为对象字面量alert(a.a);//使用.运算符访问成员alert(a["a"]);//使用[]运算符访问成员b="a";alert(a[b]);//使用表达式下标访问成员a=[1,2];//赋值为数组字面量alert(a[0]);//使用[]运算符访问元素b=1;alert(a[b]);//使用表达式下标访问元素</script>5 研究置名称创建一个HTML文件,容如下。

在浏览器中打开该文件。

分析代码。

<script type="text/javascript">var a=new Number(1);//调用构造函数Number,传递参数1,a是对象alert(a);//输出1alert(typeof a);//输出objectalert(a instanceof Object);//输出true,说明a是显式创建的对象a=Number(1);//调用转换函数Number,传递参数1,a是数值,不是对象alert(a);//输出1alert(typeof a);//输出numberalert(a instanceof Object);//输出false,说明a不是显式创建的对象a=1;alert(a instanceof Object);//输出false,说明a不是显式创建的对象Object.prototype.b=1;//构造函数Object的原型对象添加成员balert(a.b);//输出1,说明构造函数Object的原型是所有数据的原型Number.prototype.c=2;//构造函数Number的原型对象添加成员calert(Number.c);//输出undefined,说明构造函数Number的原型不是Number对象的原型alert(Number.b);//输出1,说明构造函数Object的原型是Number对象的原型alert(a.c);//输出2,说明数值常量继承了构造函数Number的原型</script>首先将参数1以对象方式赋给a,打开页面,会弹出a的值,接着弹出a的类型为object,然后判断a是否是object的实例对象,弹出true,说明a是显示创建的对象,随后将a转换为number类型,弹出的依然为1,由于类型转换,这次a的类型为number,因为a已被转换为number,所以他是会弹出false,在将1赋值给a,a为整数型,弹出false,因为a为int,不是object的实例对象,接着页面弹出1,说明构造函数object的原型可以作为所有数据的原型,再然后页面弹出undefined,因为number是一个类型,而number对象是一个对象,类型不匹配,最后弹出2,说明数值常量继承了number的原型。

6 研究with语句创建一个HTML文件,容如下。

在浏览器中打开该文件。

分析代码。

<script type="text/javascript">var a={b:1,c:2};var b=3;var d=4;with(a){alert(b);//输出1alert(d);//输出4}</script>打开页面,弹出1和4,这是因为with语句先找寻a,a中存在b的值,于是直接输出了b的值,然后没有在d中检索到d,再检索d的值并输出。

7 研究for-in语句创建一个HTML文件,容如下。

在浏览器中打开该文件。

分析代码。

<script type="text/javascript">var s="";var a={b:1,c:2}for(var i in a){s+=i+":"+a[i]+"\n";}alert(s);var s="";var a=[1,"2",[3,'4']]for(var i in a){s+=i+":"+a[i]+"\n";}alert(s);</script>打开页面,弹出了a的键值对,因为for-in循环,把a的键与值转换成了字符串赋给a,然后弹出a另外一个键值对,原因同上。

8 研究逻辑值创建一个HTML文件,容如下。

在浏览器中打开该文件。

分析代码。

<script type="text/javascript">var a=Boolean(false);alert(a&&true);//输出false,因为a是逻辑值falsevar b=new Boolean(false);alert(b&&true);//输出true,因为b是非空对象</script>首先将a创建为布尔型的false,因为&&是逻辑与运算,真与假得到假,所以输出false,然后创建一个对象b,赋值为false,因为逻辑与运算中,前一个字段非空即为真,真与真得到真,因此输出true。

相关主题