对象及日期
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 = new Object()
对象的结构(容器 他具备存储数据的功能)
对象的结构是以key:value的形式体现(键值对的形式 key是唯一的 value可以是任意类型)
var obj = {new:'jack',age:18,isGirl:true,likeFoods:['西瓜','冬瓜','南瓜','北瓜'],likeUser:[name:'czh',age;18]}
具备增删改查的操作
查(从对象里面获取数据)通过key(属性名)来访问对应的值(属性值)
var obj = {
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 = 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
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 里面的代码执行时间要比外面的短