概念:无序的相关属性和方法的集合
组成:属性、方法
属性:特征
方法:行为
创建对象三种方式:
1、利用对象字面量创建对象{}
var obj={};//创建一个空对象
var obj ={
uname:"qwe",
age:12,
sex:"男",
sayHi:function() {
console.log("hi~");
}
}
2、使用对象
console.log(obj.uname);//第一种
console.log(obj["age"]);//第二种
3、调用方法
obj.sayHi();
eg:
var obj={};
var obj= {
//定义属性
name:"可可",
class:"阿拉斯加犬",
age:5,
color:"棕红色",
//定义方法
jiNeng:function() {
console.log("汪汪汪~");
console.log("演电影");
}
}
console.log(obj.name,obj.class,obj.age,obj.color);
obj.jiNeng();
2、利用new object创建对象
var obj=new Object();
obj.uname="name";
obj.age=12;
obj.sayHi= function() {
consoloe.log(.);
}
eg:
var obj=new Object();
obj.uname="鸣人";
obj.sex="男";
obj.age=19;
obj.sayHi=function() {
console.log("影分身术");
}
console.log(obj.uname,obj.sex,obj.age);
obj.sayHi();
3、构造函数创建对象(不需要retrurn返回值)
function 构造函数() {//构造函数名首字母大写
this.属性=值;
this.方法=function(){}
}
new 构造函数名();//用new关键字调用构造函数
eg:
function Yx(name,type,red) {
this.name=name;
this.type=type;
this.red=red;
this.gong=function(gong) {
console.log(gong);
}
}
var LinaPo=new Yx("廉颇","力量型","500血量");
console.log(LinaPo);
LinaPo.gong("近战");
var HouYi=new Yx("后裔","射手型","100血量");
HouYi.gong("原战");
console.log(HouYi);
遍历对象(用for in)
for(var 变量 in 对象) {
console.log(k);//输出属性名
console.log(obj[k]);//输出属性值
eg:
var obj={
name:"老师",
age:18,
sex:"男"
}
for(var k in obj) {
console.log(k);//name,age.sex
console.log(obj[k]);//老师,18,男
内置对象
定义:js自带的一些对象,提供常用的属性和方法
查阅内置对象参考文档:MDN Web Docs
时间戳:获得总毫秒数(距离1970年1月1日)
// 1、通过以下两种获取
var date=new Date();
console.log(date.valueOf());
console.log(date.getTime());
// 2、简单写法
var date1 =+new Date();
console.log(date1);
// 3 H5 新增获取
console.log(Date.now());
eg:Dete() 日期对象,是一个构造函数,必须使用new来调用创建
1、无参
var date =new Date();
console.log(date);//显示当当前日期
2、
2.1数字参数
var date1=new Date(2019,10,1);
console.log(date1);2019/11/1
2.2字符串参数
var date2=new Date("2022-10-1 8:8:8");
console.log(date2);//2022/10/1 8:8:8
格式化日期年月日2022年1月3日 星期一
var date=new Date();
var year=date.getFullYear();//年
var month=date.getMonth()+1;//月
var dates=date.getDate();//日
var arr=["星期天","星期一","星期二","星期三","星期四","星期五","星期六"];
var day=date.getDay();//获取星期
var hours=date.getHours();//获取小时数
var minutes=date.getMinutes();//获取分钟数
var second=date.getSeconds();//获取秒数
console.log(`今天是:${year}年 ${month}月 ${dates}日 星期${day} ${hours}时 ${minutes}分 ${second}秒`);
获取当前时间
function getTime() {
var time=new Date();
var h=time.getHours();
h=h < 10 ? '0' +h:h;
var m=time.getMinutes();
m=m <10 ? '0' + m : m;
var s =time.getSeconds();
s=s < 10 ? '0' +s :s;
return h+':' +m+':'+s;
}
console.log(getTime());
倒计时核心算法
/ d=parseInt(总秒数/60/60/24);//计算天数
// h=parseInt(总秒数/60/60%24);//计算小时
// m=parseInt(总秒数/60%60);//计算分数
// s=parseInt(总秒数%60);//计算当前秒数
数组对象
检测是否为数组的两种方式
1、instanceof
var arr=[];
var obj={};
console.log(arr instanceof Array);//返回true
console.log(obj instanceof Array);//返回false
2、Array.isArray(参数); h5新增方法 ie9以上版本支持
var arr=[];
var obj={};
console.log(Array.isArray(arr));//返回true
console.log(Array.isArray(obj));//返回false
添加删除数组元素
1、 push(参数) 在数组后面添元素 用了之后直接输出数组arr.push(元素)返回的是数组长度
2、unshift(参数)在数组的开头,添加元素 用了之后直接输出数组arr.unshift(元素)返回的是数组长度
3、pop() 删除最后一个元素(一次只能删一次) 不需要参数 用了之后直接输出数组arr.pop()返回的是删除的元素的值
4、shift() 删除第一个元素 不需要参数 用了之后直接输出数组arr.pop()返回的是删除的元素
数组排序
reverse() 颠倒数组顺序 改变原数组 返回新数组 (翻转数组)
var arr =[1,2,3];
arr.reverse();
console.log(arr);//3,2,1
sort([compareFunction]) 对数组排序 改变原数组 返回新数组 如果没有函数,元素按照Unicode位点排序
冒泡排序
var arr =[1,3,2];
arr.sort(function(a,b){
return a-b; //升序
return b-a;//降序
}
);
console.log(arr);//3,2,1
数组索引方法
indexOf (数组元素) 查找数组第一个满足元素索引 如果在数组中找不到元素 返回-1
lastIndexOf(数组元素) 查找数组最后一个满足元素索引 如果在数组中找不到元素 返回-1
数组转换为字符
toString()
var arr=[1,2,3];
console.log(arr.toString());//1,2,3
join(分隔符)
var arr=[1,2,3];
console.log(arr.join());//1,2,3
console.log(arr.join(-));//1-2-3
字符串对象
基本包装类型 :把简单的数据类型包装为复杂数据类型
执行过程:
生成临时变量,把简单类型包装成为复杂数据类型
var temp=new String('adcd');
赋值给我们声明的字符变量
str=temp;
销毁临时变量
temp=null;
字符串不可变:就是重新赋值也是在内存中重新开辟空间,字符串名称指向新的值,旧的依然存在
根据字符返回位置
根据字符串返回位置 str.indexOf("要查找的字符",[起始的位置]);
var str='我的钱,钱没了';
console.log(str.indexOf('钱'));//2
console.log(str.indeOf('钱',3));//从索引号3开始往后查找
字符串对象返回字符位置案例
<script>
var str="abcoefoxyozzopp";
var index=str.indexOf('o');
var num=0;
while(index!==-1) {
console.log(index);
num++;
index=str.indexOf('o',index+1);
}
console.log('o出现的次数是:'+num);
</script>
根据位置返回字符
charAt(index) :返回指定位置的字符(index字符串的索引号) str.charAt(0)
charCodeAt(index) :返回指定位置处字符的ASCLL码(index字符串的索引号)str.charCodeAt(0)
目的:判断用户按下的按下的哪个键
str[index] :获取指定位置的字符(index字符串的索引号) HTML5,IE8+支持和charAt()等效
eg:统计出现最多的字符和次数
核心算法:利用charAt() 遍历这个字符串
把每个字符串都存储给对象,如果对象没有该属性,就为1,如果存在就+1
遍历对象,得到最大值和该字符
var str="abcoefoxyozzopp";
var o={};
for(var i=0;i<str.length;i++){
var chars=str.charAt(i);//char是字符串的每一个字符
if(o[chars]) {//o[chars]得到的是属性值
o[chars]++;
} else {
o[chars]=1;
}
}
console.log(o);
var max=0;
for(var k in o) {
//k得到的是属性名
//o[k]得到的四属性值
if(o[k]>max) {
max=o[k];
ch=k;
}
}
console.log(max);
console.log("最多的字符是“+ch);
concat(str1,str2,str3):方法用于连接两个或多个字符串,拼接字符串,等效于+,
var str='andy'; console.log(str.concat('red');//andyred
substr(start,length) :从start位置开始(索引号),length取得个数,重点记这个
var str1="我的苹果"; console.log(str1.substr(1,2));//苹果
slice(start,end) :从start位置开始,截取到end位置,end取不到 索引号
substring(start,end)::从start位置开始,截取到end位置,end 取不到 基本和slice相同 但是不接受负值
替换字符 replace("被替换的字符”,‘替换为的字符’);
var str='andy'; console.log(str.replace('a','b');//bndy 把所有o替换成* var str="abcoefoxyozzopp"; while(str1.indexOf('o') !==-1) { str =str.replace('o','*'); } console.log(str1);
字符转换为数组 split("分隔符“);
var str2='red,str,blue'; console.log(str.split(',');//[red,str,bule]