原生js(五)--- 引用类型及数据类型转换

对象

  • 万物皆对象 js中所有的事物都可以看作对象,如数字,字符串,数组,函数,等。并且允许自定义对象、
    对象是带有属性和方法的特殊数据类型(属于引用值);
    对象的创建方式有两种
    • 字面量
      • var obj = {}
    • 构造函数 ps:构造函数要严格遵循大驼峰式命名规则(开发规范);
      • var obj = new Object();
      • var obj = {};
    //自定义对象    
    var obj ={        
        lastName : "张三",        
        age : 40,        
         sex : undefined,        
        phone : null    
        }    
    //输出对象属性    
    document.write(obj.lastName,"<br/>",obj.age,"<br/>",obj["age"]);


	function  data() {}
	var data1 = new 

数组

  • 数组是一组数据的集合。其表现形式是一块连续的内存地址,数组名是内存地址的首地址。
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/>");//获取数组元素	
        }	
 //数组还有其它方法。。。

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值