11、JavaScript内置对象

内置对象基础:

Js中对象分为三大类:

1、自定义的对象:可以利用对象封装自己的数学对象

2、浏览器对象

3、内置对象:常用的方法,定义好的对象

查阅文档:

查阅文档MDN、W3C

先查阅对象的功能

Math

不是不是构造函数 所以不需要用new来调用直接使用即可

Math.PI //圆周率

Math.floor() //向下取整

Math.ceil() //向上取整

Math.round() //四舍五入 ,就近取整

Math.abs() //绝对值

Math.max()/Math.min() //最大和最小值

random()取到随机整数

//我们想要得到两个数之间的随机整数,并且包含着首尾的2个整数 
Math.floor(math.random() * (max - min + 1))+min;  

function getRandom(min , max){
	return Math.floor(math.random()*(max-min +1))+min; 
}

​ string.length 获取字符串的长度 返回值为数值型

new Date().getDay() //获取星期 返回值(0-6)

Date

Date()方法的使用:构造函数:

1、获取当前时间必须实例化

var now = new Date(); console.log(now);

2、Date()构造函数的参数

如果括号里有时间,就返回参数里面的时间。

例如日期格式字符串为’2019-5-1’,可以写成new Date(‘2019-5-1’),或者new Date(‘2019/5/1’)

日期格式化:

dObj.getFullYear() //获取当年

dObj.getMonth() //获取当月(0-11)

dObj.getDate() //获取当天日期

dObj.getDay() //获取星期几(周日0 到周六6)

dObj.getHours() //获取当前小时

dObj.getMinutes() //获取当前分钟

dObj.getSeconds() //获取当前秒钟

dObj.getTime() //返回当前毫秒数

时间补0:h = h>10 ? ‘0’+h :h

时间戳:

​ valueOf()

​ getTime()

​ //获得Date的总毫秒数(时间戳) 不是当前的时间毫秒数,而是距离1970-1-1号过了多少毫秒

1、通过valueOf() getTime()

var date = new Date();
console.log(date.valueOf());  
//就是我们现在时间距离1970-1-1号过了多少毫秒 console.log(date.getTime());

2、简单的写法(最常用的写法)

var date1 = +new Date(); 
//+new Date()  返回的就是总的毫秒数 console.log(date1);

3、H5新增的 获得总的毫秒数

console.log(Date.now());

倒计时

//倒计时 
//1、核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒相减,比如05分减去25分,结果会是负数的 
//2、用时间戳来做,用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒是 
//3、把剩余时间的毫秒数转换为天、时、分、秒(时间戳转换为时分秒)

//转换公式如下 d = parseInt(总秒数 /60 /60 /24);   
//计算天数 h = parseInt(总秒数 /60 /60 %24);   
//计算小时 m = parseInt(总秒数 /60 %60);   
//计算分钟 s = parseInt(总秒数 %60);   
//计算当前秒数

Array

检测是否为数组

(1)instanceof检测是否为数组

var arr = []; 
var obj = {}; 
console.log(arr instanceof Array) 
console.log(obj instanceof Array)


(2)Array.isArray(参数); H5新增的方法 ,ie9以上版本支持

console.log(Array.isArray(arr)) 
console.log(Array.isArray(obj))

添加/删除数组方法

push(参数1…) 末尾增加一个或多个元素,返回值:返回新的长度

unshift(参数1…)向数组开头添加一个或多个元素,返回值:返回新的长度

pop()删除数组最后一个元素,数字长度减1,返回值:删除它元素的值

shift()删除数组第一个元素,数字长度减1,返回值:返回第一个元素的值

push():数组末尾添加一个或多个数字元素

//添加删除数组元素方法
//1、push()在我们数组的末尾 添加一个或者多个数组元素 push推 
var arr = [1, 2 , 3]; //
arr.push(4, 'pink'); 
console.log(arr.push(4,'pink')); 
console.log(arr); 
//1、push是可以给数组追加新的元素 
//2、push()参数直接写新数组元素就可以了 
//3、push完毕之后,返回的结果是,新数组的长度 
//4、原数组也会发生变化

unshift:数组前面增加元素

console.log(arr.unshift('red' , 'purple'));
console.log(arr); 
//1、unshift是可以给数组前面追加新的元素 
//2、unshift()参数直接写,数组元素就可以个 
//3、unshift完毕之后,返回的结果是新数组的长度 
//4、原数组也会发生变化

pop:删除数组最后一个元素

console.log(arr.pop());
console.log(arr); 
//1、pop是可以删除数组最后一个元素,一次只能删除一个 
//2、pop()没有参数 
//3、pop完毕之后,返回的结果是 删除的那个元素 
//4、原数组也会发生变化

shift:删除数组第一个元素

console.log(arr.shift()); 
console.log(arr); 
//1、shift是可以删除数组第一个元素,一次只能删除一个 
//2、shift()没有参数 
//3、shift完毕之后,返回的结果是 删除的那个元素 
//4、原数组也会发生变化

翻转数组

reverse() ,颠倒数组中元素的顺序,无参数,该方法会改变原来的数组,返回新数组

var arr = [1 , 2 , 3]; 
arr.reverse(); 
console.log(arr);

数组排序

sort():数组排序

sort(),对数组的元素进行排序,该方法会改变原来的数组,返回新数组

//个位数排序 var arr = [1 , 2 , 3]; 
//数组排序(冒泡排序) 
arr.sort(); 
console.log(arr); 

//多位排序 
var arr1 = [13 , 4 , 77 , 1 , 7]; 
arr1.sort(function(a,b){
	//return a-b; 升序的顺序排列  return b-a; 降序的顺序排列 
}); 
console.log(arr1);

数组索引方法

indexOf() 数组中查找给定元素的第一个索引 ,存在返回索引号,不存在,返回-1

arr.indexOf('a')

lastIndexOf() 在数字中的最后一个索引 ,存在返回索引号,不存在,返回-1

arr.lastindexOf('a')

数组去重案例

算法:遍历旧数组,拿着旧数组元素查询新数组,没有添加,否则不添加 
数组去重['c','a','z','a','x','a','x','c','b']要求去除数组中重复的元素 
1、目标:把旧数组里面不重复的元素选取出来放到新的数组中,重复的元素只保留一个,放到新数组中去重 
2、核心算法:遍历旧数组,拿着旧数组元素去查询新数组,如果该元素在新数组没出现过,我们就添加,否则不添加 
3、我们怎么知道该元素没有存在?利用新数组.indexOf(数组元素),如果返回时-1,就说明数组里面没有该元素 
封装一个 去重的函数unique 独一无二的 

function unqier(arr){  
    var newArr = [];  
    for(var i = 0 ;i <arr.length ;i++){    
        if(newArr.indexOf(arr[i]) === -1){      
            newArr.push(arr[i]);    
        }  
    }  
    return newArr; 
} 

var demo = unique();

数组转换为字符串:

1、toString():将我们数组转换为字符串,逗号分隔每一项 ,返回一个字符串

var arr = [1 ,2 ,3]; console.log(arr.toString()); //1,2,3

2、join(‘分隔符’):把数组中所有元素转换为一个字符串,返回一个字符串

var arr = [1,2,3]; console.log(arr.join());  //1,2,3 
console.log(arr.join('-')); //1-2-3 
console.log(arr.join('&')); //1&2&3

数组连接/截取/splice:

concat(): 连接两个或多个数组, 不影响原数组,返回一个新的数组

slice() :数组截取 slice(begin,end) ,返回被截取项目的新数组

splice(): 数组删除splice(第几个开始,要删除的个数) ,返回被删除项目的新数组,这个会影响原数组

String

字符串对象:

基本包装类型::就是把简单数据类型包装成为了复杂数据类型

var str = 'andy'; 
console.log(str.length); 
//对象才有属性和方法 ,复杂数据类型才有属性和方法 
//简单数据类型为什么会有length属性呢? 
//1、把简单数据类型包装为复杂数据类型 var temp = new String('andy'); 
//2、把临时变量的值给str str =temp; 
//3、销毁这个临时变量 temp = null;

**一共有三种基本包装类型 :**String、Boolean、Number

**字符串不可变:**看似变化了,实际上是地址变了

//值得里面的值不可变,看上去是改变了内容,实际是地址改变了,开辟了新的空间 
var str = 'abc'; 
str = 'hello'; //当重新给str赋值时候,常量abc不会被修改,仍然在内存中 
//重新给字符串赋值,会在内存中重新开辟空间,这个特点就是字符串的不可变 
//由于字符串的不可变,在大量拼接字符串时候会有效率问题 
//例子: 
var str = ''; for(
    var i = 0 ;i < 1000000 ; i++){
    	str += i; 
} console.log(str);  //这个结果需要花费大量时间,因为需要不断开辟新的空间

根据字符返回位置

indexOf(‘要查找的字符’, 开始的位置)

//返回指定内容在原字符串的位置,如果找不到就返回-1 ,开始的位置是index索引号

lastIndexOf

//从后往前找,只找第一个匹配的

//字符串对象 根据字符返回位置 
str.indexOf('要查找的字符'[起始的位置]) 
var str = '改革春风吹满地,春天来了' 
console.log(str.indexOf('春'));

根据位置返回字符(重点)

charAt(index)

//返回指定位置的字符(index 字符串的索引号) 使用:str.charAt(0)

​ arCodeAt(index)**

//获取指定位置处字符ASCII码(index索引号) 使用:str.charCodeAt(0)

str[index]

//获取指定位置处字符 H5,IE8+ 和charAt()等效

根据位置返回字符

//1、charAt(index) 根据位置返回字符

var str = 'andy';

console.log(str.charAt(3));

//遍历所有字符

for(var i = 0 ;i<str.length ;i++){

console.log(str.charAt(i));

}


//2、charCodeAt(index)返回相应索引号字符ASCII值 目的:判断用户按下了那个键

console.log(str.charCodeAt(0));//97


//3、str[index] H5新增

console.log(str[0]); //a

字符串操作方法js

concat(str1,str2,str3…) //用于连接两个或多个字符串

substr(start,length) //从start位置开始(索引号),length取得个数,重点记住这个

slice(start,end) //从start位置开始,截取到end位置,end取不到(他俩都是索引号)

substring(start,end) //从start位置开始,截取到end位置,end取不到,基本和slice相同,但不接受负值

**replace(‘被替换的字符’,‘替换为的字符’):**字符转为数组

split(‘分隔符’)

toUpperCase()转化大写

toLowerCase()转换小写

字符串操作方法:

concat(str1,str2,str3…)

//concat('字符串1','字符串2') 
var str = 'andy' 
console.log(str.concat('red'));

substr(start,length)

//substr('截取的起始位置开始','截取几个字符') 
var str = 'andy' 
console.log(str.substr(2,2));
//第一个2,是索引的2,第二个2 ,是取2个字符

replace(‘被替换的字符’,‘替换为的字符’)

//替换字符replace('被替换的字符','替换为的字符') 它只会替换第一个字符 
var str = 'andyandy' 
console.log(str.replace('a' , 'b')); 
//有一个字符串,'abcoefoxyozzopp' 要求把里面所有o替换为* 
var str = 'abcoefoxyozzopp'; 
while(ste1.indexOf('o' !==-1) ){ 
    str1 = str1.replace('o','*')
}
console.log(str1);

split(‘分隔符’)转换为数组

2、字符转为数组 split('分隔符') 前面学过join 把数组转换为字符串 

var str2 = 'red,pink,blue'; 
console.log(str2.split(',')); 
var str3 = 'red,pink,blue'; 
console.log(str2.split('&'));

简单数据类型/复杂类型:

简单类型又叫做基本数据类型或值类型

复杂类型又叫做引用类型

**值类型:**简单数据类型/基本数据类型,在存储时变量中存储的是值本事,因此叫做值类型

string ,number ,boolean,undefined,null

**引用类型:**复杂数据类型,在存储变量时变量中存储的仅仅是地址(引用)因此叫做引用数据类型

通过new关键字创建的对象(系统对象、自定义对象)如object 、array、Date等

堆和栈

堆栈空间分配区别:

1、:由操作系统自动分配释放存放函数的参数值,局部变量的值等,其操作方式类似于数据结构中的栈

简单数据类型存放带栈里面

2、,存放复杂数据类型,一般由程序员分配释放,若程序员不是放,由垃圾回收机制回收

复杂数据类型存放到堆里面

简单数据类型和复杂数据类型传参

简单数据类型传参:直接赋值,不会影响

复杂数据类型传参:

复杂类型的内存分配:

**引用类型(复杂数据类型):**通过new关键字创建的对象(系统对象,自定义对象)如

Object、array、Date等

引用类型变量(栈空间)里存放的是地址,真实的对象存放在堆空间里

复杂类型传参:传递的是地址

函数的形参也可看作是一个变量,当我们把引用类型变量传给形参时,

其实是把栈空间里保存的地址复制给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象

//复杂类型传参 
function Person(name){  
    this.name = name; 
} function f1(x){ 
    //x = p  console.log(x.name); //这个输出什么,刘德华  
    x.name = '张学友'  
    console.log(x.name);//这个输出什么,刘德华 
} 
var p = new Person("刘德华") 
console.log(p.name);//这个输出什么,张学友 
f1(p); 
console.log(p.name);//这个输出什么,张学友
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值