1 对象
- 对象是一个具体的事物
- 在JS中,对象是一组无序的相关属性和方法的集合,对象是由属性和方法组成的
- 属性:事物的特征,在对象中用属性来表示(常用名词)
- 方法:事物的行为,在对象中用方法来表示(常用动词)
- JS中的对象表达结构更清晰,更强大(与数组、变量相比)
2 创建对象的三种方式
2.1 利用自变量来创建对象
对象的字面量:{ }
// 方法一:利用字面量创建对象
// 创建一个空的对象
var obj={};
//创建一个包含属性和方法的对象
var obj2={
uname='长一心',//注意此处用逗号
age=18,
sex='男',
sayHi=function(){ //方法用匿名函数
console.log('Hi~');
}
}
注意事项:
调用对象的两种方式:
2.2 利用new Object创建对象
//方法二:利用new Object创建对象
var obj=new Object();//创建了一个空的对象
obj.name='长一心';//利用等号赋值添加属性和方法,结尾用分号
obj.age=3;
obj.sex='男';
obj.sayHi=function(){
console.log('Hi~');
}
//调用对象的属性和方法
console.log(obj.name);
obj.sayHi();
2.3 利用构造函数创建对象
利用构造函数创建对象的语法:
举例:
new关键字的执行过程
调用构造函数时:var ldh=new Star(‘刘德华’,18,‘男’);
- new构造函数可以在内存中创建一个空的对象
- this就会指向刚才创建的空对象
- 执行构造函数里面的代码,为这个新对象添加属性和方法。
- 返回这个新的对象(所以构造函数中不需要return)
3 遍历对象 for…in
for…in语句
//利用for...in对对象的属性和方法进行遍历
for var k in obj{//一般用k或key作为变量名
cosole.log(k);//k变量输出的是属性名
cosole.log(obj[k]);//obj[k]输出的是属性值
}
4 对象小结
5 内置对象
5.1 Math对象
注意:Math不是一个构造函数(不需要new调用)
注意:Math.round()在遇到0.5时,不论正负都是往大了取值,1.5取2,-1.5取-1
随机数方法:Math.random()
- 返回一个[0,1)的小数
- 这个方法不需要参数
5.2 Date对象
Date() 日期对象:是一个构造函数,必须用new来调用创建
调用的两种方式:
注意getMonth()返回的月份需要+1才是实际的月份
注意getDay() 的结果中:0是周日 1是周一
实例:
得到总毫秒数(时间戳)的几种方法:
5.3 数组对象
5.3.1 创建数组的两种方式
注意:一个变量时表示数组长度,两个变量时表示数组元素!
5.3.2 检测参数是否为数组的方法
有两种方法:
(1)instanceof 运算符 :变量 instanceof Array
(2)Array.isArray(参数)
输出:true / false
5.3.3 添加删除数组元素的方法
- push() 方法
- unshift() 方法
- pop() 方法
- shift() 方法
5.3.4 数组排序
-
reverse() 翻转数组
-
sort() 数组排序
var arr1=[7,107,4,33,57,11];
//固定的排序结构!
arr1.sort(function(a,b){
return a-b; //升序的排列顺序
// return b-a;// 降序的排列顺序
});
console.log(arr1);
5.3.5 返回数组索引
- indexOf()
- lastIndexOf()
重点案例:数组去重
function unique(arr){
var newArr=[];
for(i=0;i<arr.length;i++){
// 遍历旧数组,如果新数组中不存在该元素则存入新数组中
if(newArr.indexOf(arr[i])===-1){
newArr.push(arr[i]);
}
}
return newArr;
}
var demo=['L','a','y','L','L','y'];
console.log(unique(demo));
5.3.6 数组转换为字符串
join与toString的区别在于可以自定义分隔符
5.4 字符串对象
5.4.1 基本包装类型
5.4.2 字符串的不可变性
指的是字符串里面的值不可变,虽然看上去可以重新赋值,改变内容,但其实是地址变量,内存中开辟了一个新的内存空间。
5.4.3 根据字符串返回位置 indexOf/lastIndexOf
例子:查找字符串中某个字符出现的次数
5.4.4 根据位置返回对应字符(重点)charAt/ charCodeAt
例子:统计出现最多的字符及其次数
<script>
var str='Lay has a song named lay you down aaaa';
o={};
for(i=0;i<str.length;i++){
var chars=str.charAt(i);
if(o[chars]){
o[chars]++;
}else{
o[chars]=1;
}
}
console.log(o);
//遍历对象
var max=0;
var maxLetter='';
for (var k in o){
if (o[k]>max){
max=o[k];
maxletter=k;
}
}
console.log('最多的字符是:'+maxletter);
</script>
5.4.5 拼接/截取/替换字符串
替换字符 replace(‘被替换的字符’,‘替换为的字符’)
注意:replace只会替换第一个指定字符