js中的方法(对象)研究

时间:2010-04-11 19:22:45  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:l文件内即可开始研究了 ^_^ //我定义的是一个带参数的test1(arg1)方法(对象) //当你是第一次研究这个示例时,我建议你最好是从上到下的开始研究,因为后面有部分解释利用了一些前面的结论。 //你可以从上到下的逐步开放代码前的//注释来研究,研究到后面部分时再注释掉前面你不再关心的代码。 function test1(arg1){ //下面是定义变量的3种基础方法,对应...
  正文:<script language="JavaScript">
<!--
//js中的方法(对象)研究
//研究人:hamal
//这是我研究js中方法过程中写的一个例子,觉得挺有意思的,放上来给大家参考下
//使用方法:直接全部拷贝到本地的一个html文件内即可开始研究了 ^_^
//我定义的是一个带参数的test1(arg1)方法(对象)
//当你是第一次研究这个示例时,我建议你最好是从上到下的开始研究,因为后面有部分解释利用了一些前面的结论。
//你可以从上到下的逐步开放代码前的//注释来研究,研究到后面部分时再注释掉前面你不再关心的代码。
function test1(arg1){
//下面是定义变量的3种基础方法,对应下面的代码,你可以简单采用注释其中两个定义的方法来慢慢研究。
//a = arg1;//这里定义的a是一个和test1平级别的变量,即a和test1都是window对象的属性,a不在test1中,不是test1的属性。
//var a = arg1;//这里定义的a仅仅是一个在test1方法内可用的变量,它不是test1的属性,而且它不能被该方法外部的任何代码直接使用。
this.a = arg1;//这里定义的a不仅是this对象的一个属性(注意this对象不一定是test1对象^_^,他可能会是window对象或其他一切对象),而且方法外部的代码可以使用this所指的对象的一个具体实例加.a的方式引用他。例如如果this代表window对象,则在test1()方法外部和内部,我们都可以直接使用变量a了。
alert("in");//这句最好不要注释掉,很多地方的代码执行过程需要通过他才能发现。
//return "return value";//我认为,如果方法没有定义返回值,则系统自动为方法返回一个undefined类型。当你想看方法的返回值时可以去掉前面的注释。
}



/*
对于alert(test1());语句,alert()方法的参数如果是一个方法,则alert()会做2件事:1.执行该方法,2.将该方法的返回值作为alert()方法的参数。
下面代码想调用test1()方法(对象),但不传入参数,js与java和c++不同,对方法没有参数重载的概念,只要没有语法和运行错误,js解释器会调用test1(arg1)方法,并接受test1(arg1)方法的返回值做参数,但由于test1(arg1)方法没有定义返回值(这是在注释掉return语句的情况下,当然,在完成了下面的研究后,你就可以开放return语句研究了),所以在test1(arg1)方法成功执行之后,我认为有两种解释都可以很好的说明程序的实际表现:
1. test1(arg1)方法会返回一个undefined,即任意没有定义返回值的方法默认返回一个undefined数据类型。
2. alert()方法会检查test1(arg1)方法的返回值,当没有检测到时,会将自己的参数设置为undefined数据类型。
我个人更倾向于采用第1种解释方法。因为,我认为如此的设计会使js解释器更简单,使js更具灵活性。
*/
alert(test1());//执行test1(arg1)方法,并在没有出现语法和运行错误的情况下,使用test1(arg1)方法的返回值来显示。
/*
当在test1(arg1)中使用a = arg1;定义a时这里会显示undefined。由于arg1在方法被调用时未传入,所以arg1为undefined,再将这个值赋给a,而且a是window的属性。
当在test1(arg1)中使用var a = arg1;定义a时这里会出现js的脚本运行时错误。因为这里在window对象中根本就没有声明a这个变量。
当在test1(arg1)中使用this.a = arg1;定义a时这里会显示undefined。由于arg1在方法被调用时未传入,所以arg1为undefined,再将这个值赋给a,而且a是window的属性。为什么a会是window的属性而不是test1的属性呢?这都是因为this关键字,this关键字代表当前系统中正在使用的对象。上面的代码alert(test1());相当于alert(window.test1());显然现在的当前运行对象是window,所this代表window,this.a就相当于window.a
*/
//alert(a);//这里的a很有意思,我们应该注意。
//alert(test1.a);//最好在你研究完并明白下面的alert(test1);语句部分之后再来自己研究这句的各种结果,那时你所需要知道的概念和说明我都已经描述过了,你需要的只是自己去动动脑筋,呵呵。


/*
这里我简单解释下4种不同的变量状态,这只是我个人的定义,大家可以参考:
1. alert(some_var);
如果some_var变量没有被声明(我称形如var some_var;或some_var;的语句形式为声明),则运行alert()时会报js运行时错误。
2. var some_var; 或 some_var;
alert(some_var);
如果是这种形式的代码,变量被声明但没有被初始化(我称形如var some_var = null;或var some_var = 某个非undefined值表达式;的语句形式为初始化),则运行alert();时会显示undefined。
3. var some_var = 某个值为null的表达式;
alert(some_var);
如果是这种形式的代码,变量被初始化为null,显然运行alert();时会显示null。
"js中的方法(对象)研究"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/JavaScript/13572.html


关键字:

关于《js中的方法(对象)研究》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td