JavaScript基础Day06:内置对象
JavaScript中的对象分为3种:内置对象、浏览器对象、自定义对象
JavaScript 提供多个内置对象:Math、Array、Number、String、Boolean…
对象只是带有属性和方法的特殊数据类型。
如何学习一个方法?
- 方法的功能
- 参数的意义和类型
- 返回值意义和类型
- demo进行测试
一、Math对象
Math.PI // 圆周率
Math.random() // 生成随机数
Math.floor()/Math.ceil() // 向下取整/向上取整
Math.round() // 取整,四舍五入
Math.abs() // 绝对值
Math.max()/Math.min() // 求最大和最小值
Math.sin()/Math.cos() // 正弦/余弦
Math.power()/Math.sqrt() // 求指数次幂/求平方根
- demo01:自己定义对象实现Math的max方法
function MyMath() {
//添加了一个方法
this.getMath = function () {
var max = arguments[0]; //设置第一个元素为最大值
for (var i = 0; i < arguments.length; i++) {
if (max < arguments[i]) { //遇到比max大的元素则重新赋值
max = arguments[i];
}
}
return max;
}
}
//实例对象
var mt = new MyMath();
var getMax = mt.getMath(100, 20, 30, 40);
console.log(getMax); //100
- demo02:随机产生十六进制的颜色
function getColor() {
var str = "#";
//定义一个取值的数组
var arr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
for (var i = 0; i < 6; i++) {
//产生的每个随机数都是一个索引,根据索引找到数组中对应的值,拼接到一起
var num = parseInt(Math.random() * 16);
str += arr[num]; //字符串连接
}
return str;
}
console.log(getColor());
二、Date对象
用来处理日期和时间。Date 对象基于1970年1月1日(世界标准时间)起的毫秒数。
var dt = new Date();
//获取年
console.log(dt.getFullYear());
//获取月
console.log(dt.getMonth() + 1);
//获取日
console.log(dt.getDate());
//获取小时
console.log(dt.getHours());
//获取分钟
console.log(dt.getMinutes());
//获取秒
console.log(dt.getSeconds());
//获取星期
console.log(dt.getDay());
三、String对象
// 1 字符方法
charAt() //获取指定位置处字符
charCodeAt() //获取指定位置处字符的ASCII码
str[0] //HTML5,IE8+支持 和charAt()等效
// 2 字符串操作方法
concat() //拼接字符串,等效于+,+更常用
slice() //从start位置开始,截取到end位置,end取不到
substring() //从start位置开始,截取到end位置,end取不到
substr() //从start位置开始,截取length个字符
// 3 位置方法
indexOf() //返回指定内容在元字符串中的位置
lastIndexOf() //从后往前找,只找第一个匹配的
// 4 去除空白
trim() //只能去除字符串前后的空白
// 5 大小写转换方法
to(Locale)UpperCase() //转换大写
to(Locale)LowerCase() //转换小写
// 6 其它
search()
replace()
split()
fromCharCode()
// String.fromCharCode(101, 102, 103); //把ASCII码转换成字符串
- demo03:查询每个字母出现的次数
var str = "what are you doing";
var obj = {};
for (var i = 0; i < str.length; i++) {
//将字符串中的字母一次存入key中
var key = str[i];
//判断obj中有没有这个键
if (obj[key]) {
obj[key]++;
} else {
obj[key] = 1;
}
}
for (var key in obj) {
console.log(key + ":" + obj[key]);
}
四、Array对象
-
检测一个对象是否是数组
- instanceof
- Array.isArray() HTML5中提供的方法,有兼容性问题
函数的参数,如果要求是一个数组的话,可以用这种方式来进行判断
-
toString()/valueOf()
- toString() 把数组转换成字符串,逗号分隔每一项
- valueOf() 返回数组对象本身
-
数组常用方法
演示:push()、shift()、unshift()、reverse()、sort()、splice()、indexOf()
- demo04:将一个字符串数组输出为|分割的形式,比如“刘备|张飞|关羽”。使用两种方式实现
function myJoin(array, seperator) {
seperator = seperator || ',';
array = array || [];
if (array.length == 0){
return '';
}
var str = array[0];
for (var i = 1; i < array.length; i++) {
str += seperator + array[i];
}
return str;
}
var array = [6, 3, 5, 6, 7, 8, 0];
console.log(myJoin(array, '-'));
console.log(array.join('-'))
- demo05:将一个字符串数组的元素的顺序进行反转。[“a”, “b”, “c”, “d”] -> [ “d”,“c”,“b”,“a”]。使用两种种方式实现。提示:第i个和第length-i-1个进行交换
function myReverse(arr) {
if (!arr || arr.length == 0) {
return [];
}
for (var i = 0; i < arr.length / 2; i++) {
var tmp = arr[i];
arr[i] = arr[this.length - i - 1];
arr[arr.length - i - 1] = tmp;
}
return arr;
}
var array = ['a', 'b', 'c'];
console.log(myReverse(array));
console.log(array.reverse());
- demo06:工资的数组[1500, 1200, 2000, 2100, 1800],把工资超过2000的删除
// 方式1
var array = [1500,1200,2000,2100,1800];
var tmpArray = [];
for (var i = 0; i < array.length; i++) {
if(array[i] < 2000) {
tmpArray.push(array[i]);
}
}
console.log(tmpArray);
// 方式2
var array = [1500, 1200, 2000, 2100, 1800];
array = array.filter(function (item, index) {
if (item < 2000) {
return true;
}
return false;
});
console.log(array);
- demo07:[“c”, “a”, “z”, “a”, “x”, “a”]找到数组中每一个a出现的位置
var array = ['c', 'a', 'z', 'a', 'x', 'a'];
do {
var index = array.indexOf('a',index + 1);
if (index != -1){
console.log(index);
}
} while (index > 0);
- demo08:编写一个方法去掉一个数组的重复元素
var array = ['c', 'a', 'z', 'a', 'x', 'a'];
function clear() {
var o = {};
for (var i = 0; i < array.length; i++) {
var item = array[i];
if (o[item]) {
o[item]++;
}else{
o[item] = 1;
}
}
var tmpArray = [];
for(var key in o) {
if (o[key] == 1) {
tmpArray.push(key);
}else{
if(tmpArray.indexOf(key) == -1){
tmpArray.push(key);
}
}
}
returm tmpArray;
}
console.log(clear(array));
五、基本包装类型
JavaScript提供了三个特殊的引用类型:String/Number/Boolean
// s1是基本类型,基本类型是没有方法的
var s1 = 'zhangsan';
var s2 = s1.substring(5);
// 当调用s1.substring(5)的时候,先把s1包装成String类型的临时对象,再调用substring方法,最后销毁临时对象, 相当于:
var s1 = new String('zhangsan');
var s2 = s1.substring(5);
s1 = null;
//变量不能调用属性或方法,如果调用了就是基本包装类型,这个变量也不是普通的变量了,而是基本包装类型对象
var str="hello";
str=str.replace("ll","HH");
console.log(str);
//如果是一个对象&&true,那么结果是true
//如果是一个true&&对象,那么结果是对象
var flag=new Boolean(false);
var result=true&&flag;
console.log(result);
var num=10;
var num2=Number("10");//转换,没有new---类型转
var num3=new Number("10");//基本包装类型