对象及日期
Date日期
日期对象的定义(使用new关键词)
1、获取当前的时间(本地的时间)
var date=new Date()//不传参 获取当前的时间
2、获取指定的时间
var date=new Date(123456)//一个参数毫秒值 将这个毫秒值加上对应的1970.1.1 0:0:0
var date=new Date('2000/1/1 00:00:00')//指定一个字符串 来指定对应的时间 规定格式
var date=new Date(2000,8,8,12,15,15)//年 月 日 时 分 秒
日期对象的方法
get获取时间
// get获取的方法
// 年 月 日 时 分 秒 星期 对应的时间挫(毫秒值 离1970/1/1的毫秒值)
var date=new Date()
console.log(date.getFullYear());//年
console.log(date.getMonth()+1);//月只有0-11 所以+1
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());//获取时间分钟 60为0 0-59
console.log(date.getTime());//获取时间挫 离1970/1/1的毫秒值
//时区的偏移
console.log(date.getTimezoneOffset());
set设置时间
//set设置
date.setFullYear(1888,8,18)//可以同时设置年月日
console.log(date);
date.setMonth(8,28)//可以同时设置月日
console.log(date);
date.setDate(8)//设置日
console.log(date);
date.setHours(18,8,58)//可以同时设置时分秒
console.log(date);
date.setMilliseconds(188)//设置毫秒
console.log(date);
重点月份0-11月(获取的月份比实际会小1)星期天为0
其他的方法
var date=new Date()
//转为字符串
console.log(date.toString());//普通字符串转换
console.log(date.toDateString());//以特定的格式显示星期几、 月、 日和年
console.log(date.toTimeString());//以特定的格式显示时、 分、 秒和时区
console.log(date.toLocaleDateString());//以特定地区格式显示年、 月、 日
console.log(date.toLocaleTimeString());//以特定地区格式显示时、 分、 秒
console.log(date.toUTCString());//以特定的格式显示完整的 UTC 日期: 年, 月, 日, 时, 分, 秒。
//parse 格式化
console.log(Date.parse("2015|08|24"));//转为NaN 日期就是一个Number值
console.log(Date.parse("2015-08-24"));//得到毫秒值 离1970/1/1
//得出2015年8月24日离现在的时间
var current=new Date()
var old=new Date(2015,8,24)
console.log(current-old);
对象
概述:对象是一个引用数据类型,所有引用数据类型都是对象,(使用new关键词开辟的内存空间都是对象空间)Array(typeof是object)。
==比对 比对的是地址值 ===比对 比对的是对应俩个是否是同一个
Object本身是一个函数,可以当作工具方法使用,将任意值转为对象。这个方法常用于保证某个值一定是对象。
如果参数为空(或者为undefined和null),Object()返回一个空对象。
var obj=Object();
// 等同于
var obj=Object(undefined);
var obj=Object(null);
obj instanceof Object// true
//将undefined和null转为对象,结果得到了一个空对象obj。
对象的定义
1、字面量的形式
var obj={}//{}表示的是对象
2、new观念检查来构建对象
var obj=newObject()
对象的结构(容器 他具备存储数据的功能)
对象的结构是以key:value的形式体现(键值对的形式 key是唯一的 value可以是任意类型)
var obj={
new:'jack',
age:18,
isGirl:true,
likeFoods:['西瓜','冬瓜','南瓜','北瓜'],
likeUser:[name:'czh',age;18]
}
具备增删改查的操作
查(从对象里面获取数据)通过key(属性名)来访问对应的值(属性值)
varobj={
name:'jack',
age:18,
isGirl:true,
likeFoods: ['西瓜','冬瓜','南瓜','北瓜'],
likeUser: {name:'czh',age:18}
}
console.log(obj.name)//第一种访问
console.log(obj['name'])//第二种访问
console.log(obj.likeFoods[3])//南瓜 对象里面嵌套数组访问
console.log(obj.likeUser.age)//15 对象里面嵌套对象访问
添加和修改(赋值操作)
//添加和修改 其实就是设置对应的值
//如果当前这个key在对应的对象里面可以找到他就修改 如果找不到就是添加
var obj2={
name:'hello'
}
obj2.name='wolrd'//能找到 就会覆盖
obj2.age=10//找不到就会添加
console.log(obj2);
删除操作 使用delet关键词
//删除操作 删除里面的属性 delete
delete obj2.name//删除obj2里面的name
console.log(obj2);
this(关键词表示这个他是-个对象特殊的对象会随引用的变化而变化)
函数里面的this (哪个对象调用这个函数 this就是哪个) (this存在于函数内)
全局的this 指向window的 对象里面函数的this 指向当前对象
function sayHello() {
console.log(this)
}
//函数的this指向他的调用者 谁调用这个函数 this就是指向谁
//全局调用的 js的顶层对象 全局对象 window 也就是全局写的变量 以及全局调用的方法 都是widow的
sayHello()//window调用的 this指向window sayHello() == window.sayHello
var a=10//全局变量a 相当于window的一个属性及属性值 a:10
console.log(window['a']);//10
//也就意味着 在全局声明的内容都是window的内容
//也就是说 全局调用的内容里面的属于window
console.log(this);//window
var obj={
name:"jack",
sayHi:function() {
console.log(this);//this指向obj
console.log(this==obj);//true
console.log(this===obj);//true
console.log(this.name);//访问自身name属性
}
}
//调用这个函数
obj.sayHi()//obj调用的 this指向obj
//处于对应的对象里面的this指向当前的对象
在全局声明的变量都属于window的属性 可以通过window【属性名】进行访问
var obj=newObject()
var obj1=newObject()
var obj2={}
var obj3={}
console.log(obj==obj1) //false
console.log(obj==obj2) //false
console.log(obj2==obj3) //false
console.log(obj2=={}) //false
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(定时器 定时去执行里面的代码 执行多次)
clearIntval(清除定时器 传对应的id)
//window.setInterval(执行的函数,执行一次的时间,参数)他也是异步的
//不要在定时器内声明变量 因为会无限执行
var i=0
var id=setInterval(function() {
console.log('定时器执行')
i++
if(i==10) {
//清除定时器
clearInterval(id)
}
},1000)
setInterval(function(arg){
console.log(arg);
},100,'hello')
//倒计时 轮播图的动画 任意动画(js)
//先走同步代码 再走异步代码
不要再setIntval里面套setIntval
如果setIntval套了setIntval 里面的代码执行时间要比外面的短