object / objjava
存储数据方式:属性: 属性值ajax
定义方式:数组
一、字面量:经过{}来定义一个空对象dom
1 var obj = {};
二、构造函数异步
1 var obj = new Object();
与数组的区别:ide
与数组的操做基本相似,经过属性来操做属性值函数
对象.属性post
点语法是特殊规定,能够不加引号spa
点语法不支持数值属性的调用对象
点语法不会解析变量,只会将变量,按照字符串处理
1 var obj = { name: '张三', age: 18, 100: 100 }; 2 console.log(obj.name); // 张三
对象[属性]
对象的属性其实是字符串形式,必需要加引号
数值做为属性时,调用数据加不加引号都行
支持变量解析,能够解析变量中存储的数据,做为属性在对象中调用属性值
变量写在[]中,必定不要加引号,加了引号就成了字符串了
1 var obj = { name: '张三', age: 18, 100: 100 }; 2 console.log(obj['name']); // 张三 3 console.log(obj[name]); // undefined
对象的操做:
修改:
与数组的操做相似,是对已有的属性进行赋值
后赋值的数据,会覆盖以前存储的数据
新增:
对不存在的属性进行赋值,操做效果就是给对象新增单元
删除:
delete(对象.属性):删除对象中的指定属性
delete(对象[属性]):删除对象中的指定属性
for...in语法支持对象的循环
1 var obj = { name: '张三', age: 18, sex: '男', addr: '北京', hobby: '吃鸡' }; 2 for (var key in obj) { 3 // 点语法不解析变量,执行结果是找key这个属性,结果是undefined 4 // []语法解析变量,key是对象的属性,obj[key]得到属性值 5 console.log(obj.key, obj[key]); 6 }
定义一个空对象
for...in循环遍历str
经过obj[]方法查找对象中是否有该属性(键名)
没有该属性(即为undefined),就新增属性,属性值为1
有该属性(键名),属性值(键值)加1
1 var str = 'aaaabbbbbcccccdddeeefffgggggg'; 2 var obj = {}; 3 4 // i存储的是字符串的索引,str[i]是对应的字符 5 for (var i in str) { 6 if (obj[str[i]] === undefined) { 7 // 若是调用结果是undefined,证实对象中没有这个键名 8 // 新增对象的单元,键名是这个字符,键值是 1 9 obj[str[i]] = 1; 10 } else { 11 // 调用结果不是undefined,证实对象中已经存在这个键名 12 // 存储数值数据 +=1 或者 ++ 13 obj[str[i]]++; 14 } 15 }
1 var arr = [1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,5,6,7,1,2]; 2 3 var obj = {}; 4 5 arr.forEach(function(v){ 6 if(obj[v] === undefined){ 7 obj[v] = 1; 8 }else{ 9 obj[v]++; 10 } 11 })
JavaScript定义好的,能够直接使用的对象
内置数学/算术对象
math.random():随机数值
Math.random() 生成 0-1的小数,能够是0,但永远不会是1
生成 a - b 的随机数值,包含 a 而且包含 b
1 var num = parseInt(Math.random()*(b+1-a) +a);
Math.round():四舍五入取整
没有小数部分,四舍五入取整,保留整数部分
不改变变量存储的原始数值数据
1 var float1 = 123.56789; 2 float1 = Math.round(float1); 3 console.log(float1); // 124
Math.floor():向下取整
彻底舍弃小数部分
1 var float2 = 123.999999999; 2 float2 = Math.floor(float2); 3 console.log(float2); // 123
Math.cell():向上取整
整数部分加1取整
1 var float3 = 123.00000000001; 2 float3 = Math.ceil(float3); 3 console.log(float3); // 124
Math.pow():乘方运算/幂运算
1 // 2的3次方,结果是8 2 console.log(Math.pow(2, 3))
Math.abs():绝对值
1 console.log(Math.abs(-10)); // 10
Math.sqrt():平方根,只有正数
1 console.log(Math.sqrt(9)); // 3
Math.PI:圆周率数值
1 console.log(Math.PI);
内置时间对象
使用步骤
建立时间对象
1 var d = new Date(); 2 // 获取的时间是本地时间,也就是你当前所在时区的时间 3 // 中国时间是东八区,世界标准时间 +8小时
使用时间对象
获取4位年份
1 var year = d.getFullYear();
1 var month = d.getMonth() + 1;
1 var date = d.getDate();
1 // 0表示星期日,1表示星期一 2 var week = d.getDay(); 3 // 定义一个数组,来存储执行结果 0-6 对应的星期 4 var weekArr = ['日', '一', '二', '三', '四', '五', '六']; 5 week = `星期${weekArr[week]}`;
1 var hours = d.getHours();
1 var minutes = d.getMinutes();
1 var seconds = d.getSeconds();
设定date
1 // 设定完整的时间, 年份日,时分秒,会自定计算星期 2 var d = new Date('1982-10-12 8:8:0'); 3 var d = new Date('1982/10/12 8:8:0'); 4 var d = new Date('1982 10 12 8:8:0'); 5 var d = new Date('1982,10,12 8:8:0');
1 // 只设定年,默认执行 月日,时分秒 2 var d = new Date('2020');
1 // 只设定年月,默认执行 日,时分秒 2 var d = new Date('2020/5');
1 // 只设定年月日,默认执行 时分秒 2 var d = new Date('2020/5/6');
1 // 只设定年月日,小时分钟 默认执行 秒 2 // 不容许独立设定小时,至少要设定小时分钟 3 var d = new Date('2020/5/6 8:10');
1 // 至少要设定年月 2 // 设定月份的数值是 0 - 11 对应 1月 - 12月 3 var d = new Date(2020,7); // 对应的是2020年8月
1 // 设定年月日 2 var d = new Date(2020,6,2);
1 // 设定年月日,时 2 var d = new Date(2020,6,2,10);
1 // 设定年月日,时分 2 var d = new Date(2020,6,2,10,10);
1 // 设定年月日 时,分,秒 2 // 完整时间 3 var d = new Date(2020,6,2,10,10,10);
时间戳
当前时间到1970年1月1日0时0分0秒的时间差
JavaScript时间戳的单位是毫秒(1秒=1000毫秒)
1 // 设定时间对象 2 var d = new Date(); 3 // 默认获取的时间单位是毫秒,须要转化成秒 4 var times = Math.floor( d.getTime() / 1000 );
按照指定的时间间隔循环往复执行程序
基本语法
按照指定时间间隔来执行匿名函数中定义的程序
时间间隔单位是毫秒
setInterval( function(){ 程序内容 }, 时间间隔 )
1 var interval = setInterval(function(){ 2 console.log('按设定时间间隔打印') 3 }, 1000);
1 clearInterval(interval);
定时器的异步执行
在JavaScript中,普通程序都是同步执行的,遵循顺序流程、分支流程、循环流程三种流程控制
特殊程序是异步执行的(包括定时器、延时器、ajax请求)
全部的异步程序,都会在同步程序执行完以后才会执行
全部的异步程序会一块儿开始执行,时间间隔短的先执行,时间间隔长的后执行
根据时间间隔,延迟执行程序,只会执行一次
1 setTimeout( function(){执行的程序}, 延迟时间 )
延时器的清除
1 clearTimeout()
1 // 数值.toFixed(保留小数位数) 2 var float = 123.456789; 3 console.log(float2.toFixed(2));