渡一教育公开课web前端开发JavaScript精英课学习笔记(四)引用类型及数据类型转换

对象

JavaScript中所有事物都看作对象。如 数字、字符串、数组、函数等。并允许自定义对象。

对象只是带有属性和方法的特殊数值类型(是引用类型)

<script type = "text/javascript">
    //自定义对象
    var obj ={
        lastName : "张三",
        age : 40,
        sex : undefined,
        phone : null
    }
    //输出对象属性
    document.write(obj.lastName,"<br/>",obj.age,"<br/>",obj["age"]);
</script>

数组

数组是一组数据的集合。其表现形式是一块连续的内存地址,数组名是内存地址的首地址。

<script type = "text/javascript">
    var arr1 = [1,2,3,"abc",undefined,null,,,,,,,,];//定义数组1
	arr1[7] = "通过下标访问数组元素";//通过下标给数组元素赋值。
	arr1.push("添加一个元素","添加1个元素","添加多个元素");//在数组末尾追加元素。
    var arr2 = new Array(1,2,3,"abc",undefined,null); //定义数组2
	var arr3 = new Array(2); //定义数组3,只有一个数字参数的时候,数字仅代表数组大小。
	var len = arr1.Length;//获取数组长度。

    //数组的length属性赋值,会改变数组的长度。
	var arr = [1,2,3,4,5,6,7,8,9];
	console.log(arr);
	console.log(arr.length);
	arr.length = 3;
	console.log(arr);
	arr.length = 11;
	console.log(arr);



    //遍历数组的方法1
    for (var i = 0; i < arr1.length; i++) {
        document.write(i + ":" + arr1[i],"<br/>");//获取数组元素
    }
	arr1.pop();//移除数组最后一个元素。
	for (var index in arr1){//循环读取已初始化的数组元素的下标并放入变量 index 中。
		document.write(index + ":" + arr1[index],"<br/>");//获取数组元素
	}
	//数组还有其它方法。。。
</script>

typeof(表达式)

返回数据的类型有number,string boolean object,undefined,function

<script type = "text/javascript">
	var arr = new Array();
	arr[0] = 1;
	arr[1] = "str";
	arr[2] = undefined;
	arr[3] = null
	arr[4] = function (){};//给元素赋一个函数。
	arr[5] = 9 > 0;
	for(var index in arr){
		document.write(typeof(arr[index]) + ":" + arr[index],"<br/>");
	}
</script>

数据类型转换

分为两种:隐式类型转换(js自动转换数据类型)、显示类型转换(使用代码指定需要转换的类型)

编写代码时要注意隐式类型转换。

<script type = "text/javascript">
	//强制类型转换方法 Number()、parseInt()、String()、Boolean()等
	var arr = new Array();
	arr[0] = Number("9");//转为数字
	arr[1] = Number("a");
	arr[2] = Number(undefined);
	arr[3] = Number(null);
	arr[4] = Number(function (){}); 
	arr[5] = Number(9 > 0);
	arr[6] = Number("_123");
	arr[7] = parseInt("_123");//转为整型
	arr[8] = parseInt("123px");//返回连续的数字位
	arr[9] = parseFloat("123.2px");//返回连续的数字位
	arr[10] = String(123);//转为字符串
	arr[11] = String(undefined);
	arr[12] = String(null);
	arr[13] = Boolean(123);//转为布尔
	arr[14] = Boolean("abc");
	arr[15] = Boolean(undefined);
	arr[16] = Boolean(null);
	arr[17] = Boolean(function (){});
	for(var index in arr){
		document.write(typeof(arr[index]) + " : " + arr[index],"<br/>");
	}
	var a = 123;
	var b = a.toString(8);//转换为 8 进制的字符串表现形式。
	var c = parseInt(b,8);
	document.write(typeof(b) + " : " + b,"<br/>");
	document.write(typeof(c) + " : " + c,"<br/>");
	//隐式类型转换
	for(var index in arr){
		//isNaN 方法是先把参数转为数字后,再进行判断。也就是隐式转换为数字。
		document.write(isNaN(arr[index]) + " : " + arr[index],"<br/>");
	}	
	var d = false == 0;
	var dd = 1 == "1";
	var ddd = 1 === "1";//绝对比较符 不进行隐式类型转换
	var e = NaN == NaN;
	var f = undefined == null;
	var g = NaN == undefined;
	document.write(typeof(d) + " : " + d,"<br/>");
	document.write(typeof(dd) + " : " + dd,"<br/>");
	document.write(typeof(ddd) + " : " + ddd,"<br/>");
	document.write(typeof(e) + " : " + e,"<br/>");
	document.write(typeof(f) + " : " + f,"<br/>");
	document.write(typeof(g) + " : " + g,"<br/>");
	
</script>

引用类型赋值

<script type = "text/javascript">
	var obj = {name:"abc"};//定义一个对象 obj
	var obj1 = obj;		//定义一个对象 obj1,并 将 obj 赋给 obj1,这样 obj 和 obj1 指向同一个存储地址。
	console.log(obj1.name);//对象 obj1 的属性 name 和 obj 的属性 name 是同一个。
	obj.name = "def";//更改 obj 的属性 name ,也就是更改了 obj1 的属性 name 。
	console.log(obj1.name);//对象 obj1 的属性 name 和 obj 的属性 name 是同一个。
	obj = {name:"123"};//重新给 obj 赋值,这样 obj 和 obj1 就是两个不同的对象了,指向了不同的存储地址。
	console.log(obj1.name);
	console.log(obj.name);// obj 和 obj1 变成了不同的对象。
</script>

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值