一、对象
-
基础类型
number string boolean null undefined -
引用类型
数组 函数 对象 -
对象是指一个具体的事物。万物皆对象。
一个具体的事物一般都会有行为和特征。例如 手机:
行为:打电话 聊微信 玩和平精英 刷新闻
特征:颜色 屏幕分辨率 摄像头像素 -
对象的行为------js对象的函数
-
对象的特征------js对象的属性
-
JavaScript中的对象
JavaScript中的对象可以看做生活中具体事物的抽象。
js对象是属性+函数的集合。
属性:可以是基本数据类型,也可以是引用数据类型。 -
2.创建一个对象
1.使用new关键字类创建
2.使用字面量
var hero = new Object();
var hero ={
};
2.1新增属性
hero.heroName = ("貂蝉");
hero["hero.age"] = 18;
2.2使用属性
对象名.属性名
alert(hero.heroName);
alert(hero["hero.age"]);
2.3新增方法
对象名.属性名=function(){
函数体
};
hero.skillOne = function() {
console.log("对方对你使用了一技能");
}
3 遍历属性
for…in语法
key 表示属性名
属性值:obj[key]
for(var key in obj){
}
//使用字面量新建一个对象
var hero = {
"heroName": "亚索",
"age": 30,
skillOne: function() {
console.log("斩钢闪");
},
skillTwo: function() {
console.log("一去不复返");
}
};
for (key in hero) {
console.log(key + "===" + hero[key]);
}
遍历结果:
for (key in hero) {
console.log(hero[key]);
}
4 删除属性
delete 对象名.属性名
//删除前可弹出3,删除后为undefined
hero.age = "3";
delete hero.age;
alert(hero.age);
二、对象的分类
1.内建对象
由ES标准定义的对象,在任何ES实现中都可以使用 js提供的对象
Math Date String Number Boolean Function Object
2.宿主对象
主要有浏览器提供的对象。
BOM DOM
3.自定义对象
开发人员自己定义的对象。
三、基本类型与引用类型区别
- 区别:
基础数据类型的数据存储在栈中,变量直接指向的是基础数据类型的值。
引用数据类型的数据存储在堆中,变量指向的是引用数据类型的地址。 - 比较:
基本数据类型比较时,比较值。
而引用数据类型比较时,比较内存地址,如果内存地址相同,指向了同一个对象,则相等,否则不相等。
// 结果:11,10,false
var a = 10;
var b = a;
a++;
alert(a);
alert(b);
alert(a == b);
// 结果:阿丽亚科通,阿丽亚科通,[object Object]
var hero = {
"hName": "亚索",
"R": "狂风绝息斩"
}
var hero2 = {
"hName": "亚索",
"R": "狂风绝息斩"
}
var hero2 = hero;
hero.R = "阿丽亚科通";
alert(hero.R);
alert(hero2.R);
alert(hero = hero2);
四、Math对象
Math对象: 提供了很多关于运算的方法。
Math.random(); 返回0-1之间的随机数。
假如我们需要一个n-m之间的数。Math.round(Math.random()*(m-n))+n
Math.round()四舍五入
Math.max() 返回最大值。
Math.min() 返回最小值
Math.abs() 返回绝对值
Math.ceil()向上取整
Math.floor() 向下取值
Math.pow(x,y) x的y次方
Math.sqrt(num) 开平方
Math.PI = 180° 弧度。
1弧度=Math.PI/180.
//1-10
alert(Math.round(Math.random() * 9) + 1);
//3-7 能取到3,取不到7,6.99也是取整数6
alert(parseInt(Math.random() * 4) + 3);
alert(Math.min(1, 5, 20, 15));
alert(Math.abs(-5));
alert(Math.ceil(9.000000000));
alert(Math.floor(-9.9999999));
alert(Math.pow(2, 3));
alert(Math.sqrt(9));
封装一个函数:随机生成一个十六进制的颜色值,然后将结果返回。
#ff6700 #b0b0b0
0-f 放入一个数组
0-1 0-15下标
function color() {
var str = "#";
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", "d", "e", "f"];
for (var i = 0; i <= 5; i++) {
str += arr[Math.round(Math.random() * 15)];
}
return str;
}
document.write(color());
五、Date对象
1.创建日期对象。
Wed Jan 06 2021 14:38:02 GMT+0800 (中国标准时间)
星期 月 日 年 时 分 秒 时区
创建日期对象时,可以指定日期。时分秒若不填写,则默认为00:00:00
- 指定日期的几种方式:
1.new Date(“2021/01/07”)
2.new Date(2020,09,30,15,33,20);
在国外,月份是从0开始的,0-11
3.new Date(1576800000000);
4.new Date(“2020-12-31 12:30:20”);
//非指定,是现在的时间
var d = new Date();
//Wed Jan 06 2021 00:00:00 GMT+0800 (中国标准时间)
var d = new Date("2021/01/06");
//Sat Feb 06 2021 15:30:24 GMT+0800 (中国标准时间)
var d = new Date(2021, 01, 06, 15, 30, 24);
//Fri Dec 20 2019 08:00:00 GMT+0800 (中国标准时间)
var d = new Date(1576800000000);
//Wed Jan 06 2021 15:30:20 GMT+0800 (中国标准时间)
var d = new Date("2021-01-06 15:30:20");
alert(d);
1.日期对象方法
格式:Date.parse(日期对象);
返回值:指定的日期和时间据 1970/1/1 午夜(GMT 时间)之间的毫秒数。
功能:将日期对象转为毫秒数。
//1609862400000
var d1 = Date.parse("2021, 01, 06");
document.write(d1);
获取日期:
d.getTime() 获取当前的毫秒数。 返回 1970 年 1 月 1 日至今的毫秒数。
d.getDate() 返回日
d.getDay() 返回周几。
d.getMonth() 获取月份 从0开始 范围为:0-11
d.getFullYear() 返回年
d.getHours() 获取小时数
d.getMinutes() 获取分钟数
d.getSeconds() 获取秒数
d.getMilliseconds() 获取毫秒数
d.getTimezoneOffset() 获取本地时间与格林威治时间的分钟差。
设置日期:
setDate() 设置日期的天数。
setMonth() 设置月份
d.setFullYear() 设置日期的年份
d.setHours() 设置小时数
d.setMinutes() 设置分钟数
d.setSeconds() 设置秒数
d.setMilliseconds() 设置毫秒数
练习:将当前时间以(yyyy-MM-DD hh:mm:ss)这个格式输出到页面上。
var d = new Date();
var d1 = d.getFullYear();
var d2 = d.getMonth() + 1;
var d3 = d.getDate();
var d4 = d.getHours();
var d5 = d.getMinutes();
var d6 = d.getSeconds();
// d2 = d2 < 10 ? "0" + d2 : d2;
// d3 = d3 < 10 ? "0" + d3 : d3;
// d4 = d4 < 10 ? "0" + d4 : d4;
// d5 = d5 < 10 ? "0" + d5 : d5;
// d6 = d6 < 10 ? "0" + d6 : d6;
// document.write(d1 + "-" + d2 + "-" + d3 + " " + d4 + ":" + d5 + ":" + d6);
document.write(d1 + "-" + (d2 < 10 ? "0" + d2 : d2) + "-" + (d3 < 10 ? "0" + d3 : d3) + " " + (d4 < 10 ? "0" + d4 : d4) + ":" + (d5 < 10 ? "0" + d5 : d5) + ":" + (d6 < 10 ? "0" + d6 : d6));
2.日期格式化
var d = new Date();// 以特定格式显示 星期几 月 日 年
alert(d.toDateString());//以特定格式显示 时分秒 时区
alert(d.toTimeString()); //16:33:30 GMT+0800 (中国标准时间)
alert(d.toLocaleDateString()); //2021/1/6
alert(d.toLocaleTimeString()); //下午4:34:58
alert(d.toUTCString()); // 显示格林威治时间。Wed, 06 Jan 2021 09:01:22 GMT
练习:显示格式为:2021年1月6日 星期三 16:48:50
function showtime() {
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth();
var date = d.getDate();
var week = d.getDay();
var hour = d.getHours();
var minutes = d.getMinutes();
var seconds = d.getSeconds();
document.write(year + "年" + (doubleNum(month + 1)) + "月" + doubleNum(date) + "日 星期" + num2chinese(week) + " " + hour + ":" + doubleNum(minutes) + ":" + doubleNum(seconds))
}
// 数字转中文
function num2chinese(n) {
var arr = ["日", "一", "二", "三", "四", "五", "六"];
return arr[n];
}
// 给小于10的前面补0
function doubleNum(n) {
if (n < 10) {
return "0" + n;
} else {
return n;
}
}
showtime();
1.输入n,输出n天后的时间。
function afterDay(n) {
var d = new Date();
d.setDate(d.getDate() + n);
return d;
}
document.write(showTime(afterDay(3)));
2.获取两个日期之间的天数
var d1 = new Date();
var d2 = new Date("2021/01/07 19:00");
function countDays(d1, d2) {
// var time1 = Date.parse(d1);
// var time2 = Date.parse(d2);
Date.parse(d1);
Date.parse(d2);
var time = Math.abs(Date.parse(d2) - Date.parse(d1));
return parseInt(time / 1000 / 60 / 60 / 24);
}
document.write(countDays(d1, d2));