JS中的对象是根据某种引用类型创建出来的实例!
常用的引用类型:
- Object引用类型
//方法 1
var obj1=new Object(); //Object开头必须大写
obj1.name="ROBIN.FANG";
obj1.sex="true";
obj1.age=23;
alert(obj1.name);
alert(obj1.age);
//方法 2
var obj2=new Object();
var obj2={
name:'ROBIN.FANG', //对象里面用的是逗号!!!
sex:true,
age:23};
alert(obj2.name);
//遍历对象中元素的方法
for(var i in obj2){
alert(obj2[i]);
}
- function引用类型,使用function引用类型创建的对象我们也称为函数
//This is a standard method of creating a function!
function func1(){
alert('I am a function of func1!');
}
func1(); //If the func1 is not invoked(调用), the alert() will not work!
还有一种方式创建函数:
//This is a method to create a anonymous function! 匿名函数的创建
var a=function(){
console.log('the time is..');
}; //这种定义函数的方式最后需要加分号
a(); //The anonymous also should be invoked by variable name,otherwise it doesn't work
调用函数的时候可以传数据给函数:
<script>
function func1(a,b,c){
alert(a);
alert(b);
alert(c);
}
func1(10,100,1000);//传参数是在函数调用的时候传的
//输出结果: 10 100 1000
</script>
//不传就用参数的默认值
<script>
function func1(a,b,c=1000){
alert(a);
alert(b);
alert(c);
}
func1(9,77); //输出结果 9 77 1000
</script>
<script>
function func1(a=7,b,c){
alert(a);
alert(b);
alert(c);
}
func1(10,100); //输出结果: 10 100 undefined
</script>
<script>
function func1(a,b,c){
alert(a);
alert(b);
alert(c);
}
func1(10,100); //输出结果: 10 100 undefined
</script>
//总结:被传的参数值会覆盖原来的形式参数的值
//JS中的参数传递是从左到右传递的,从左到右挨个传,没传到的就undefined
函数可以有返回值,即将一个值返回到调用它的地方,在函数内部使用return返回即可,注意return之后的语句不会再执行!
function func1(){
alert(1);
return 100; //函数内部可以返回数据给调用它的地方
}
func1(); //弹出 1
alert(func1()); //结果是 先执行func1()函数弹出1 再后弹出100
alert(func1());
//如果我们不加return值的情况
function func1(){
alert(1);
}
alert(func1()); //先弹出1 再弹出undefined,因为此函数无返回值
function add(a,b){
return a+b;
}
alert(add(1,2)); //3
- Array 引用类型,使用Array引用类型创建的对象我们也称为数组
数组:是数据的集合, 数组里的元素的数据类型可以是数组或者object引用类型的对象创建数组
var arr1=new Array( );
arr1[0]=110;
arr1[2]=120;
alert(arr1[0]);
数组里面可以再放数组:
<script type="text/javascript">
var arr1=new Array();
arr1[0]=new Array();
arr1[0][1]=1;
arr1[0][2]=2;
arr1[0][2]=3;
alert(arr1[0][2]);
</script>
数组里也可以放对象:
<script type="text/javascript">
var arr1=new Array();
arr1[0]={
name:"ROBIN.FANG",
age:23,
Job:"IT"
}
alert(arr1[0].name);
alert(arr1[0].Job);
</script>
//存入对象的时候不需要再重新new Object();了
创建一个数组的时候也可以随即存放数据:
<script type="text/javascript">
var arr1=new Array('ROBIN',23,'Computer Science');
alert(arr1[0]);
alert(arr1[1]);
alert(arr1[2]);
</script>
创建数组的时候new也可省略
- 其他创建方法: [数组字面量]
var arr3=[];
arr3[0]=1;
arr3[1]=1000;
alert(arr3[1]); //1000
或者用别的形式:
var arr4=[1,2,3,4,'ROBIN.FANG'];
alert(arr4[3]);
arr4[5]=[2,3,'MIT']
//枚举数组的内容
for(var i=0;i<数组.length;i++){
数组[i];
}
-object引用类型的对象内部还可以创建对象作为某个属性的值,甚至放数组
var obj1={
name:'Robin',
age:18,
info:'Robin major in CS',
test1:{
math:88,
programming:86
},
test2:[112,333,111]
};
alert(obj1.age.math);
alert(obj1.test2[1]);
-函数放在object类型的对象内部叫做那个对象的方法,在函数内部如果要使用这个对象的某个属性可以使用this表示本对象
var obj1={
name:'Robin',
test:function(){
alert(this.name);
}
};
obj1.test();
obj1.age=25;
obj1.info='Robin is from China';
alert(obj1.info);
delete obj1.info;//delete the property of the object
obj1.age=26;//modify the info of the object
alert(obj1.info);
//检测对象是否拥有某个属性或方法,以字符串形式写出来
alert('name' in obj1);
针对数组 附加知识点:
JavaScript数组对象内建的常用方法:
contact(), join(),pop(),push(),reverse(), shift(), slice(), sort(), splice(),unshift()
//join() 把数组转换成一个字符串
var arr1=[110,'20','Robin'];
alert(arr1.join()); //默认中间用逗号隔开,结果: 110,20,Robin
alert(arr1.join('-')); //110-20-Robin
alert(arr1.join(' ')); //11020Robin