对象
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>