对象、定时器、日期
Date日期
Date类型使用自UTC(Coordinated Universal Time,国际协调时间) 1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。Date类型保存的日期能够精确到1970年1月1日之前或之后的 285616年.
日期对象的定义(使用new关键词)
1.获取当前的时间(本地设置的时间)
var date = new Date() //不传参就是获取当地时间
2.获取指定的时间
日期的格式可以是“2015/08/22”,“2015-08-22”,或1970年当前日期的毫秒数1443453475234
var date = new Date(123456)
//一个参数毫秒值 将这个毫秒值加上对应的1970.1.1.00.00.00
var date = new Date('2000/1/1 00:00:00')
//指定一个字符串来指定对应的时间 规定了格式
var date = new Date('2000,1,1,00,00,00) // 24小时制
日期对象的方法
get 获取的方法
var date = new Date()
console.log(date.getFullYear()) //年
console.log(date.getMonth()) //月 0-11
console.log(date.getDate()) //一个月的第几天
console.log(date.getDay()) //一个星期的第几天 星期天是第一天 0
console.log(date.getHours()) //获取时间 24为0 0-23
console.log(date.getMinutes()) //获取分钟 60为0 0-59
console.log(date.getSeconds()) //获取秒钟 0-59
console.log(date.getTime()) //获取离1970.1.1的毫秒值
console.log(date.getTimezoneOFFset()) //时区的偏移
set 设置时间
date.setFullYear(1999,10,10) //可以同时设置月和天
date.setMonth(9,20)//可以同时设置天
date.setDate(30) //设置天
date.setHours(10,15,20,120) //可以同时设置分 秒 毫秒
date.setMinutes(10) //可以同时设置秒 毫秒
date.setSeconds(20) //可以同时设置 毫秒
date.setMilliseconds(150)//毫秒值设置
重点:月份0-11月 星期天为0
其他方法
var date = new Date()
console.log(date.toString) //普通字符串转换
console.log(date.toDateString) //以对应的日期格式转换
console.log(date.toLocaleDateString) //以本地的日期格式转换
console.log(date.toLocaleString) //以本地的编码转为string
console.log(date.toTimeString) //以对应的时间格式转换
console.log(date.toUTCString) //以UTC格式转换
console.log(Date.parse('2022|8|2')) // NaN
//只能以特定的格式进行转换 返回的是毫秒值
console.log(Date.parse('2022/8/2')) //返回毫秒值
对象
概述:对象是一个引用数据类型,所有引用数据都是对象,(使用new关键词开辟的内存空间都是对象空间)Array (type of是object)
==比对 比对的是地址值(栈地址)
===比对 比对两个东西是不是同一个
var obj = new Object()
var obj1 = new Object()
var obj2 = {}
var obj3 = {}
console.log(obj==obj1) //false
console.log(obj==obj2) //false
console.log(obj2==obj3)//false
console.log(obj2=={})//false
对象的定义
1,字面量的形式
var obj= {
name :‘张三’, //创建属性字段,最后加逗号
age : 18
} //{}表示的是对象
2.new关键词来构建对象
var obj = new Object()
obj.name = ‘张三’; //创建属性字段
obj.age = 18
// 传的什么类型的参数构建的就是什么类型的对象 可写可不写
var obj = Object(); //省略了new关键字,不建议
对象的结构(容器 具有存储数据的功能)
对象的结构是key:value的形式体现(键值对的形式 key是唯一的,默认下key是string类型 value可以是任意类型的)
var obj = {name:'jack',age:18,isGirl:true,likeFoods:['西瓜' '冬瓜' '南瓜' '哈密瓜'],likeUser:{name:'张三',age:20}}
具备增删改查的操作
查(从对象里面获取数据)通过key(属性名)来访问对应的值(属性值)
var obj={name:'jack',age:18,isGirl:true,likeFoods:['西瓜' '冬瓜' '南瓜' '哈密瓜'],likeUser:{name:'张三',age:20}}
console.log(obj.name) //jack 第一种访问
console.log(obj["name"]) //jack 第二种访问 访问里面必须是字符串
console.log(obj.likeFoods[3]) // 哈密瓜 对象里面嵌套数组
console.log(obj.likeUser.age) //20 对象里面嵌套对象
添加和修改(赋值操作)
//如果当前这个key在对应的对象里面可以找到就修改 找不到就是添加
var obj = {name:'hello'}
obj.name='world'
obj.age=10
console.log(obj); //{name: 'world', age: 10}
删除操作 使用delete关键词
var obj = {name: 'world', age: 10}
delete obj.name
console.log(obj); //{age: 10}
this(关键词 表示它是一个对象 特殊的对象会随引用的)
函数里面的this (哪个对象调用这个函数this就是哪个)(this存在于函数内)
全局的this 指向window的 对象里面函数的this 指向当前对象
function sayHello(){
console.log(this);
}
//函数的this 指向他的调用者 谁调用这个函数 this就是指向谁
//全局调用的 js的顶层对象 全局对象 window
//也就是全局写的变量 以及全局调用的方法都是window的
sayHello() //window调用的 this指向window sayHello() == window.sayHello()
var a = 10 //全局变量a 相当于window的一个属性及属性值 a:10
console.log(window['a']);//10
//也就意味在全局声明的内容都是window的内容
//也就是全局调用的内容里面的this属于window
console.log(this) //window window.onload = function(){}
var obj = {
name:"jack",
sayHi:function(){
console.log(this);
console.log(this===obj);//true
console.log(this.name); //访问这个name属性
}
}
//调用这个函数
obj.sayHi() //obj调用的 this指向obj
//处于对应的对象里面的this指向当前的对象
在全局声明的变量都是属于window的属性 可以通过window[属性名]进行访问**
window的两个方法
延时器(异步的)
代码执行顺序 先同步再异步
setTimeout(延时器(异步的(多线程操作)) 延迟执行里面的代码 只执行一次)
//window.setTimeout(函数,延迟的时间(毫秒值),传递的参数) //window是可以省略的
//js引擎的解析为单线程 同步的内容相当于加了把锁(同步锁)顺序执行(一定上一次执行完才能执行下一个)
// 异步的就是没有锁(不是顺序执行)
console.log('hello world')
setTimeout(function(){
console.log('hello')
},5000) //异步的 支付的消息通知 关闭广告 销毁等
console.log('hello 张三')
//代码执行顺序 先同步 再异步
setTimeout(function(arg,message){ //对应的setTimeout可以传参数 传递的参数给里面执行的函数
console.log(arg,message);
},1000,'我是参数','你吃饭了吗') //参数可以任意的传 对应的函数内需要用形参去接收
clearTimeout(延时器id)(清除延时器 销毁对应的延时器)
var id = setTimeout(function(){ //这个id是number类型
console.log('hello')
},1000)
clearTimeout(id)
定时器(异步的)
!!一般不要在定时器里声明变量(会无限开内存)
setInterval(定时器 定时去执行里面的代码 执行参数)
clearInterval(清楚定时器)
!!!一般不要在setInterval套setInterva, 就算套了 里面的执行时间一定要比外面的要短
//window.setInterval(执行的函数,执行一次的时间,参数) 他也是异步操作
//不要在定时器声明变量
var i = 0
//先等待再执行
var id = setInterval(function(){
console.log('定时器执行')
i++
if(i==10){
clearInterval(id)
}
},1000)
//清除定时器
// clearInterval(id)
setInterval(function(arg){
console.log(arg);
},100,'hello')
//倒计时 轮播图的动画 动画(js)
//先走同步 再走异步