Number对象
1)Number对象和number基本数据类型不同;Number的类型是 Object, 而 number 的类型是 number;
2)创建对象: var x = new Number(120);
3)属性:最大值最小值 Number.MIN_VALUE 和 Number.MAX_VALUE
非数字:NaN(Not a Number),通过非数字新创建的Number对象就是非数字; var a = new Number("123abc");
判断非数字:isNaN(a); 不可使用 a == Number.NaN;
4)返回小数表达: a.toFixed(5); 表示返回的小数保留5位
返回科学记数法: a.toExponential();
返回基本数字类型的值: a.valueOf();
String对象
1)String 对象的数据类型是 object, string基本数据的数据类型是string
2)创建对象: var str = new String("sakjdhaskd");
3)属性:str.length 可得到字符串长度
4)返回指定位置字符: str.charAt(5); //返回5处的字符
str.charCodeAt(5); //返回5处的字符的Unicode码
字符串拼接:str2 = new String("jsad"); str.concat(str2);
查找子串位置:str.indexOf("a"); //返回a第一次出现的位置
str.lastIndexOf("a"); //返回a最后一次出现的位置
字符串比较:str.localeCompare(str2); //大于返回1,等于为0,小于为-1
截取子串:str.substring(0, 3); //左闭右开
拆分字符串:str.split(" "); //根据空格拆分字符串,返回字串数组
替换子串:仅替换第一个满足的子串:str.replace("search", "replace");
替换所有子串:var regS = new RegExp("search", "g"); str.replace(regS, "replace");
注:上述大部分方法,在执行完后都会返回基本类型的 string 而非 object 的string;str自身不会变化;
数组
1)创建数组:var arr = new Array(); //空数组
var arr = new Array(5);//长度为5的数组
var arr = new Array(1,2,3,4,5); //有初值的数组
2)arr.length 获取长度
3)遍历数组:
方法一:与C语言一致
方法二:for in 循环
for(i in arr){
p( x[i] );
}
4)连接数组:var z = arr1.concat( arr2 );
返回数组的字符串表达:z = arr.join("@"); 其中arr内容为1、2、3....,则得到 z为 “1@2@3”的字符串
在末尾增删数据:arr.push(6); var z = arr.pop();
在开始位置增删数据:arr.unshift(6); var z = arr.shift();
排序:arr.sort();
自定义排序算法: function cmp(a, b){ return a > b; } arr.sort(cmp);
数组反转:arr.reverse();
获取子数组:arr.slice(1, 3); 获取1、2位置的元素,区间左闭右开
日期
1)var d = new Date(); //新建的日期为当前时间
2)获取年月日:d.getFullYear(); d.getMonth(); d.getDate(); //月份从0开始,其它从1开始
获取时分秒毫秒:d.getHours(); d.getMinutes(); d.getSeconds(); d.getMilliseconds();
获取今天是本周的第几天:d.getDay(); //从0开始
获取从1970/1/1 08:00:00 到当前的毫秒数:d.getTime();
3)修改日期和时间:d.setFullYear(2012); d.setMonth(0); //月份的0表示1月
例子1
制作年龄计算器
<script> function getValue(id){ return document.getElementById(id).value; } function setValue(id, value){ document.getElementById(id).value = value; } function cacl(){ var year = parseInt(getValue("year")); var month = parseInt(getValue("month")); var day = parseInt(getValue("day")); var today = new Date(); var birth = new Date(); birth.setFullYear(year); birth.setMonth(month + 1); birth.setDate(day); var t1 = birth.getTime(); var t2 = today.getTime(); var age = (t2 - t1) / (1000*3600*24*365); var ans = Math.round(age); document.getElementById("ans").innerHTML="今年" + ans + "岁"; } </script> <strong>请输入出生年月日</strong><br/><br/> <strong>年份</strong> <select id="year"> <script> for(i = 1900; i < 2020; i++){ document.write("<option value=" + i + ">" + i + "</option>") } </script> </select> <strong>月份</strong> <select id="month"> <script> for(i = 1; i < 13; i++){ document.write("<option value=" + i + ">" + i + "</option>") } </script> </select> <strong>日</strong> <select id="day"> <script> for(i = 1; i < 32; i++){ document.write("<option value=" + i + ">" + i + "</option>") } </script> </select> <br/> <br/> <button onclick="cacl()">计算年龄</button> <br/> <br/> <strong id="ans"></strong>
1)select选择器的最终value即为选项option的value;
2)当选项过多时,可以在select中插入js代码,由js循环打印生成html代码;
3)用到了部分DOM的知识
Math
1)常数Π和E:Math.PI Math.E
2)绝对值:Math.abs(-100);
最小最大:Math.min(1, 100);
求幂:Math.pow(3, 2); //求3的2次方
四舍五入:Math.round( 3.14);
随机数:Math.random();
自定义对象
1)通过new Object 创建临时对象,这样创建的对象无法重用
<script> var cat = new object(); cat.name = "kitty"; //定义属性 cat.eat = function(){ //定义方法 alert("eat!"); } </script>
2)通过function设计一个对象
<script> function cat(name){ //设计对象 this.name = name; this.eat = function(){ alert("eat!"); } } cat.prototype.talk = function(){ //为已经设计好的对象追加新的方法 alert("talk!"); } var a = new cat("kitty"); a.eat(); a.tale(); </script>
这个对象可以重用,还可以通过 prototype 追加新的方法