javascript 练习
今天看了园中一位老大的文章:是讲的JS的精华,讲得太好了。 http://www.cnblogs.com/leadzen/archive/2008/02/25/1073404.html
于是记下我能理解的部分,当然只是别人的一点点皮毛而已。
一、JS是一段一段地执行的,而不是我以前所理解的一行一行地执行,何以见得?
function my()
{
alert("hello");
}
my();
function my()
{
alert("Hi");
}
my();
这里的结果是显示:Hi
意思是说:JS会把所有的定义放到一起,所以很明显地可以看出,这个方法是定义是什么样的了,而两个地方的调用是在定义之后,当然结果会是显示HI,
但是,有一种情况很奇怪:
var my=function()
{
alert("hello");
}
my();
my=function()
{
alert("Hi");
}
my();
这样显示的结果是hello,hi
意思是说两个定义都起作用了,我的理解是,这种定义的方式可以把my想成是一个变量,作者也是这样说的,所以它们是放到一起执行的,也就是说是一行一行地执行的,结果可想而知了。
二、对象
JS里的对象很怪,C#中是先有对象名,再有对象的属性、方法等,而JS可以把对象建立在方法之上,如:
var person=function()
{
alert(person.name+","+person.age+","+person.sex);
}
person.age=10;
person.name="deng";
person();
person.age=20;
person.name="qiang";
person.sex="男";
person();
可以看到,对象的属性可以在使用的时候再添加,
第二种定义方法:
可以看到,JS中的for又可以当成C#中的for,还可以当成C#中的foreach用,
在初始化的时候是没有任何东西的,接着,添加了per属性和me 方法,调用它们也有多种方式。
当然,可以在定义的时候初值的,
var sp={name:"deng",say:function(){alert(this.name)}};
sp.say();
这里要注意一下:属性或方法定义要用 " : " ,而它们之间的间隔要用 " , "
这只是一个简单的对象定义,看一个作者列出的复杂的对象:
var company =
{
name: "Microsoft",//名称,与下一个属性之间的间隔用 ", "
product: "softwares",//同上
chairman: {name: "Bill Gates", age: 53, Married: true},//对象中的对象
employees: [{name: "Angel", age: 26, Married: false}, {name: "Hanson", age: 32, Married: true}],//对象中的对象数组
readme: function() {document.write(this.name + " product " + this.product);}//对象中的方法
};
无论多么复杂的对象,都可以在定义的时候初始化它,这样也是为了规范。
调用如下:
company.readme();//调用方法
alert(company.chairman.name+" "+company.chairman.age);//调用对象中的对象
for(var e in company.employees)//调用对象中的数组对象
alert(company.employees[e].name+" "+company.employees[e].age+" "+company.employees[e].Married);
注意这里的e是一个索引。
后面还有很多的知识点的内容,我时候有限,更多的是能力有限,没来得及学习,以后补上心得~~
于是记下我能理解的部分,当然只是别人的一点点皮毛而已。
一、JS是一段一段地执行的,而不是我以前所理解的一行一行地执行,何以见得?
function my()
{
alert("hello");
}
my();
function my()
{
alert("Hi");
}
my();
这里的结果是显示:Hi
意思是说:JS会把所有的定义放到一起,所以很明显地可以看出,这个方法是定义是什么样的了,而两个地方的调用是在定义之后,当然结果会是显示HI,
但是,有一种情况很奇怪:
var my=function()
{
alert("hello");
}
my();
my=function()
{
alert("Hi");
}
my();
这样显示的结果是hello,hi
意思是说两个定义都起作用了,我的理解是,这种定义的方式可以把my想成是一个变量,作者也是这样说的,所以它们是放到一起执行的,也就是说是一行一行地执行的,结果可想而知了。
二、对象
JS里的对象很怪,C#中是先有对象名,再有对象的属性、方法等,而JS可以把对象建立在方法之上,如:
var person=function()
{
alert(person.name+","+person.age+","+person.sex);
}
person.age=10;
person.name="deng";
person();
person.age=20;
person.name="qiang";
person.sex="男";
person();
可以看到,对象的属性可以在使用的时候再添加,
第二种定义方法:
var obj={};
obj.per="属性";
obj.me=function(){alert("方法");};
alert(obj.per);
alert(obj["per"]);
obj.me();
obj["me"]();
for(var o in obj)
alert(o);
alert(o +" is a "+typeof(obj[o]))
可以看到,JS中的for又可以当成C#中的for,还可以当成C#中的foreach用,
在初始化的时候是没有任何东西的,接着,添加了per属性和me 方法,调用它们也有多种方式。
当然,可以在定义的时候初值的,
var sp={name:"deng",say:function(){alert(this.name)}};
sp.say();
这里要注意一下:属性或方法定义要用 " : " ,而它们之间的间隔要用 " , "
这只是一个简单的对象定义,看一个作者列出的复杂的对象:
var company =
{
name: "Microsoft",//名称,与下一个属性之间的间隔用 ", "
product: "softwares",//同上
chairman: {name: "Bill Gates", age: 53, Married: true},//对象中的对象
employees: [{name: "Angel", age: 26, Married: false}, {name: "Hanson", age: 32, Married: true}],//对象中的对象数组
readme: function() {document.write(this.name + " product " + this.product);}//对象中的方法
};
无论多么复杂的对象,都可以在定义的时候初始化它,这样也是为了规范。
调用如下:
company.readme();//调用方法
alert(company.chairman.name+" "+company.chairman.age);//调用对象中的对象
for(var e in company.employees)//调用对象中的数组对象
alert(company.employees[e].name+" "+company.employees[e].age+" "+company.employees[e].Married);
注意这里的e是一个索引。
后面还有很多的知识点的内容,我时候有限,更多的是能力有限,没来得及学习,以后补上心得~~
我不是最强的,但我是最努力的!