目录
认识对象
1、发展历史
汇编语言:汇编、C语言 面向过程语言
编码语言:Java、C++、JavaScript、Object-C、python 面向对象语言
2、思想
面向过程编程思想:只考虑数学逻辑
面向对象编程思想:直接将生活逻辑映射到我们的程序
<1>分析有哪些实体
<2>设置实体属性和功能
<3>实体之间相互作用
例子:
有一辆车速度为60km/h,一条路1000km,问题:如果让这辆车跑完这条路,需要多长时间?
车:
属性:speed 60km/h
功能:可以跑在路上
路:
属性:length 1000km
最后,让车真的跑在路上得出结果
3、语法(在javascript中没有类这个概念,只有对象,ECMA6版新增了类这个概念)
类:一类具有相同特征事物的抽象概念
对象:具体某一个个体,唯一的实例。
对象
1、通过new运算符声明对象
2、通过省略new
3、对象常量赋值(使用大括号,代表对象)
var obj1 = new Object();
var obj2 = Object();
var obj3 = {};
/*
对象属性 普通变量
婚后名(X太太) 婚前名
*/
//新增属性 使用起来和普通的变量没有任何区别
obj3.username = '钢铁侠';
obj3.age = 10;
alert(obj3.username);
alert(obj3.age);
var obj3 = {};
//[]填写的必须是字符串
obj3['username'] = '钢铁侠';
obj3['age'] = 10;
alert(obj3['username']);
alert(obj3['age']);
// alert(obj3.username);
// alert(obj3.age);
//新增方法 使用起来和普通的函数没有任何区别
obj3.show = function(){
alert("我的名字" + obj3.username + ",今年" + obj3.age + "岁");
}
obj3.show();
//方法二
obj3['show'] = function(){
alert("我的名字" + obj3.username + ",今年" + obj3.age + "岁");
}
obj3['show']();
var obj3 = {
username: "钢铁侠", //可以直接写属性名
"age": 18, //也可以添加引号
show: function(){
alert("我的名字" + obj3.username + ",今年" + obj3.age + "岁");
}
}
obj3.show();
delete
关键字 删除对象的属性或者方法
var obj3 = {
username: "钢铁侠", //可以直接写属性名
"age": 18, //也可以添加引号
show: function(){
alert("我的名字" + obj3.username + ",今年" + obj3.age + "岁");
}
};
obj3.show();
delete obj3.username;
delete obj3.show;
alert(obj3.username);
obj3['show'](); //undefined
数据结构
基本数据类型(存储一个值) => 数组(处理批量的数据) => 对象(既可以存储数据又可以存储函数)
Math对象的方法
在JS中一切皆对象。
【注】在JS中,很多关于数学运算的函数,直接一个Math对象提供。
Math.random( ) | 返回 0 ~ 1之间的随机数 |
Math.max(num1,num2) | 返回较大的数 |
Math.min(num1,num2) | 返回较小的数 |
Math.abs(num) | 绝对值 |
Math.ceil(19.3) | 向上取整 |
Math.floor(11.8) | 向下取整 |
Math.pow(x,y) | x的y次方 |
Math.sqrt(num) | 开平方 |
Math.round( ) | 四舍五入(成整数,只看小数点后一位) |
Math.sin( ) | 正弦(传入的参数是弧度) |
Math.cos( ) | 余弦(传入的参数是弧度) |
Math.PI = 180弧度 | 1弧度 = Math.PI / 100 |
alert(Math.max(10,20,30,40,50)); //50
alert(Math.min(10,20,30,40,50)); //10
alert(Math.round(3.49)); //3
alert(Math.round(3.91)); //4
alert(Math.ceil(3.1)); //4
alert(Math.floor(3.9)); //3
alert(Math.sin(30 * Math.PI / 180)); //0.499999999...;精度有问题
声明日期对象
1、没有传入参数,默认当前系统时间
Thu Oct 20 2022 22:10:36 GMT+0800 (中国标准时间)
GMT 格林尼治时间
var d = new Date();
alert(d); //Thu Oct 20 2022 22:10:36 GMT+0800 (中国标准时间)
2、传入参数
“2000-01-01”
“2000/01/01”
按照顺序,分别传入参数 年 月 日 时 分 秒 毫秒
【注】国外月份从0开始的 0~11
直接传入毫秒数 1秒 = 1000毫秒 (以1970年1月1日 0:0:0 为参照时间点去进行换算)
1970年1月1日:linux创始人 林纳斯·托瓦兹 Github网站
var d = new Date("2000-01-01"); //Sat Jan 01 2000 08:00:00 GMT+0800 (中国标准时间)
var d = new Date("2000/01/01"); //Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间)
var d = new Date(2000, 1, 8, 30, 50);//Wed Feb 09 2000 06:50:00 GMT+0800 (中国标准时间)
var d = new Date(2000, 0, 1, 8, 30, 50);//Sat Jan 01 2000 08:30:50 GMT+0800 (中国标准时间)
var d = new Date(1000); //Thu Jan 01 1970 08:00:01 GMT+0800 (中国标准时间)
alert(d);
日期对象的方法
alert(xx.toDateString( )); | 以特定的格式显示星期几、月、日和年 |
alert(xx.toTimeString( )); | 以特定的格式显示时、分、秒和时区 |
alert(xx.toLocaleDateString( )); | 以特定地区格式显示星期几、月、日和年 |
alert(xx.toLocaleTimeString( )); | 以特定地区格式显示时、分、秒和时区 |
alert(xx.toUTCString( )); |
以特定的格式显示完整的UTC日期 |
var d = new Date();
alert(d.toDateString());//Thu Oct 20 2022
alert(d.toTimeString());//22:31:06 GMT+0800 (中国标准时间)
alert(d.toLocaleDateString());//2022/10/20
alert(d.toLocaleTimeString());//22:32:01
alert(d.toLocaleDateString() + " " + d.toLocaleTimeString());//2022/10/20 22:33:08
自定义当前时间
set/getDate( ) | 从Date对象中返回一个月中某一天(1~31) |
getDay( ) | 从Date对象返回一周中某一天(0~6) |
set/getMonth( ) | 从Date对象中返回月份(0~11) |
set/getFullYear( ) | 从Date对象以四位数返回年份 |
set/getHours( ) | 返回Date对象的小时(0~23) |
set/getMinutes( ) | 返回Date对象的分钟(0~59) |
set/getSeconds( ) | 返回Date对象的秒数(0~59) |
set/getMilliseconds( ) | 返回Date对象的毫秒 |
set/getTime( ) | 返回1970年1月1日至今的毫秒数 |
getTimezoneOffset( ) | 返回本地时间与格林威治标准时间(GMT)的分钟差 |
function showTime(){
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth() + 1; //0-11
var date = d.getDate();
var week = d.getDay(); //0-6 0是周日
week = numOfChinese(week);
// var hour = d.getHours();
// var min = d.getMinutes();
// var sec = d.getSeconds();
var hour = doubleNum(d.getHours());
var min = doubleNum(d.getMinutes());
var sec = doubleNum(d.getSeconds());
var str = year + "年" + month + "月" + date + "日 星期" + week + " " + hour + ":" + min + ":" + sec;
return str;
}
//数字转成中文
function numOfChinese(num){
var arr = ["日", "一", "二", "三", "四", "五", "六"];
return arr[num];
}
function doubleNum(n){
if(n < 10){
return "0" + n;
}else{
return n;
}
}
document.write(showTime()); //修改前:2022年10月20日 星期4 22:50:1; 修改后:2022年10月20日 星期四 22:55:22
日期对象的练习
【注】所有的参照时间点都是1970年
Date.parse( )
格式:Date.parse(日期对象)
功能:可以将日期对象转成毫秒数
d.getTime( )/d.setTime( )
格式:日期对象.getTime/setTime
功能:将当前日期对象转成毫秒数
var d = new Date();
alert(d); //Thu Oct 20 2022 23:01:55 GMT+0800 (中国标准时间)
// alert(Date.parse(d)); //1666278031000
// alert(d.getTime()); //1666278031476
d.setTime(1000);//重置毫秒数
alert(d); //Thu Jan 01 1970 08:00:01 GMT+0800 (中国标准时间)
1、获取两个日期之间相差的天数
规定:传入的日期格式 “2000-01-01” “2000/01/01”
function countOfDate(d1, d2){
var dd1 = new Date(d1);
var dd2 = new Date(d2);
var time1 = dd1.getTime();
var time2 = dd2.getTime();
var time = Math.abs(time1 - time2);
return parseInt(time / 1000 / 3600 / 24);
}
alert(countOfDate("2008-08-08", "2019-10-09")); //4079
2、输入n,输出n天后的时间
function afterOfDate(n){
var d = new Date();
var day = d.getDate();
d.setDate(day + n);
return d;
}
alert(afterOfDate(3));