对象、定时器、日期

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)
//先走同步 再走异步
posted @ 2022-08-14 17:00  叮叮巴士  阅读(42)  评论(0编辑  收藏  举报