###
####
在 JavaScript 中,对象是王。如果您理解了对象,就理解了 JavaScript。
####
数据类型,之前说了有6种,
一共有6中数据类型,
string,字符串,
number,数字,
Boolean,布尔,
null,空值
undefined,未定义,
object,对象,
前5种,是基本数据类型,
object,是引用数据类型,
###
今天讲解对象数据类型,这个可以保存多个不同的基础数据类型,就像一个袋子,放了很多的基础数据类型,
###
对象有三种:
console.log()
document.write()
这个console,还有document,就是宿主对象,是已经建立好的,
###
今天学习一下,js中的内建对象,
###
数组类型
创建数组
// 使用中括号创建一个数组:
var cars = ["Saab", "Volvo", "BMW"];
// 使用 JavaScript 关键词 new 创建一个数组:
var cars = new Array("Saab", "Volvo", "BMW");
// 没有必要使用 JavaScript 的内建数组构造器 new Array()。使用 [] 取而代之!工作中都使用[]这种方式,new 关键词只会使代码复杂化。它还会产生某些不可预期的结果。
// 数组元素,您可以在数组中保存对象,保存函数。你甚至可以在数组中保存数组,
访问数组
//通过引用数组名来访问完整数组:
var cars = ["Saab", "Volvo", "BMW"];
cars
// 通过索引下标访问数组
var cars = ["Saab", "Volvo", "BMW"];
cars[0]
// a1[1:2] //不支持这种冒号的
修改数组元素的值
var cars = ["Saab", "Volvo", "BMW"];
cars[0] = "Opel";
删除元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
delete fruits[0];
数组属性和方法
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.length; // 返回数组的长度
fruits.toString(); // 转换成字符串:"Banana,Orange,Apple,Mango"
fruits.join("*"); // 也是转换成为字符串,但是可以指定分隔符,"Banana*Orange*Apple*Mango"
fruits.pop(); // 会返回并且删除掉最有一个元素,这个方法是有返回值的,就是返回了最后一个元素
fruits.push("Kiwi"); // 这个是在数组末尾添加一个元素,这个方法也是有返回值的,是返回新的数组的长度,
fruits.shift(); // 这个方法是删除第一个元素,也是有返回值的是返回第一个元素的值,
fruits.unshift("Lemon"); // 方法返回新数组的长度。
###
fruits.splice(0, 1); // 第一个参数(0)定义新元素应该被添加(接入)的位置。第二个参数(1)定义应该删除多个元素。其余参数被省略。没有新元素将被添加。
fruits.splice(0, 1,"123"); // 第三个参数是往里面添加元素,
###
合并两个数组
var myGirls = ["Cecilie", "Lone"];
var myBoys = ["Emil", "Tobias", "Linus"];
var myChildren = myGirls.concat(myBoys); // ["Cecilie", "Lone", "Emil", "Tobias", "Linus"]
合并三个数组
var arr1 = ["Cecilie", "Lone"];
var arr2 = ["Emil", "Tobias", "Linus"];
var arr3 = ["Robin", "Morgan"];
var myChildren = arr1.concat(arr2, arr3);
数组与值合并
var arr1 = ["Cecilie", "Lone"];
var myChildren = arr1.concat(["Emil", "Tobias", "Linus"]);
###
切片,
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(3); // 这是从下标3开始切出一个新的数组,
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3); // 这个是从下标1开始,到下标3(不包括3),切出一个新的数组,
###
数组排序
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); //这是按照首字母排序
fruits.reverse(); // 反转元素顺序
数组遍历,数组迭代
var fruits = ["Banana", "Orange", "Apple", "Mango"];
for(i=0;i<fruits.length;i++){console.log(fruits[i])}
##
使用forEach方法遍历,这个只是支持ie8以上的浏览器,这个方法用的不多,一般我们遍历都是用for,
而且这个forEach,是需要传递一个函数进去,
数组中有几个元素,这个函数就会执行几次,而且每次遍历都会把元素作为实参传递到函数中,
第一个参数,是元素值,
第二个参数,是元素的下标index,
第三个参数,是整个数组,
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.forEach(function(a,b,c){console.log(a)})
Date对象
// 内置的Date对象,就相当于python中的模块
创建date对象
// Date 对象由新的 Date() 构造函数创建。new Date() 用当前日期和时间创建新的日期对象:
var d = new Date();
d; // Tue Aug 17 2021 10:42:09 GMT+0800 (中国标准时间)
// new Date(year, month, ...) 用指定日期和时间创建新的日期对象。
var d = new Date(2018, 11, 24, 10, 33, 30, 0);
// 这个里面的参数,分别是年,月,日,时,分,秒,毫秒,7个,可以使用7个,也可以使用其中的前2个年月,或者前3个年月日,创建,如果只提供一个参数,则将其视为毫秒。
date对象的常用方法
var d1 = new Date();
d1.toLocaleString(); // 2021/8/17 上午10:52:20
//getDate() 获取日
//getDay () 获取星期
//getMonth () 获取月(0-11)
//getFullYear () 获取完整年份
//getHours () 获取小时
//getMinutes () 获取分钟
//getSeconds () 获取秒
//getMilliseconds () 获取毫秒
//getTime () 返回累计毫秒数(从1970/1/1午夜)
math对象
var n = -5;
n2 = Math.abs(n); //绝对值
console.log(n2);
Math.floor(5.9); //直接往下去,这就是5,
Math.min(1,2);
Math.max(1,2);
Math.pow(10,2); //返回x的y次幂
Math.random(); //返回一个0-1之间的随机数
Math.round(5.5); //四舍五入
############### JS内置对象-json对象 ################
//json对象
var s = '{"name":"andy","age":12}'; //这是一个字符串,怎么使用js转换成为json格式的,
var ret = JSON.parse(s);
console.log(ret);
console.log(typeof ret); //类型是一个对象
// 怎么把js中的对象,转换成字符串呢?
var s2 = JSON.stringify(ret);
console.log(s2);
console.log(typeof s2); //类型是一个字符串
// 这两个一定要学会,后面使用ajax传递数据的时候,会使用到
############### JS内置模块-RegExp模块,正则模块 ################
//RegExp对象,正则,类似python中的re模块
//生成RegExp对象,
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$");
//这是以字母开头,5-11位的字母数字下滑线组成
var reg2 = reg1.test('xiaoming');
console.log(reg2); //true
var reg3 = reg1.test('2xiaoming');
console.log(reg3); //false
//简单写法
console.log(/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test("xiaoming"));
console.log(/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test("3xiaoming"));
//这里面有很多的坑
// 1,re表达式内部不能加空格,否则会产生意想不到的错误,
// console.log(/^[a-zA-Z][a-zA-Z0-9_]{5, 11}$/.test("xiaoming"));
//2,test里面不写值,默认不是空,是校验的一个undefined,这是大坑啊,
console.log(/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test());//等同于console.log(/^[a-zA-Z][a-zA-Z0-9_]{5,11}$/.test("undefined"));
//3,字符串替换
//两种模式,g,i,
var ss = 'Ahahaha';
var sss = ss.replace("a","哈");//这样写只会替换第一个a,这个要记住,
var sss = ss.replace(/a/,"哈");//这样写只会替换第一个a,这个要记住,这是正则的写法
var sss = ss.replace(/a/g,"哈");//加一个g,就是说全局有多少就替换多少,
var sss = ss.replace(/a/gi,"哈");//加一个i,就是说忽略大小写,都替换
console.log(sss);
####
####