JS中的各种引用类型总结(Object引用类型、function引用类型、array引用类型)

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值