js-对象
创建对象
字面量
var person = {
name:'张三',
age:'18',
sex:'男'
toString: function () {
console.log("姓名:" + this.name + " , 年龄:" + this.age + " , 性别:" + this.sex);
}
}
person.toString();
console.log(person.name);
new Object()
var person = new Object();
person.name = "李四";
person.age = 19;
person.sex = '男';
person.toString = function () {
console.log("姓名:" + this.name + " , 年龄:" + this.age + " , 性别:" + this.sex);
}
person.toString();
console.log(person.name);
工厂模式
function createPerson(name,age,sex){
var person = new Object();
person.name = name;
person.age = age;
person.sex = sex;
person.toString = function () {
console.log("姓名:" + this.name + " , 年龄:" + this.age + " , 性别:" + this.sex);
}
return person;
}
var person1 = createPerson('王五',17,'男');
var person2 = createPerson('张柳',18,'女');
person1.toString();
person2.toString();
构造函数
函数名一般首字母大写,把对象的属性当做构造函数的参数传递进去
function Person(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
this.toString = function () {
console.log("姓名:" + this.name + " , 年龄:" + this.age + " , 性别:" + this.sex);
}
}
var p1 = new Person('1',12,'1');//通过 new 关键字调用,通过构造函数来创建对象
var p2 = new Person('2',11,'1');
p1.toString();
p2.toString();
操作对象
var person = {
name:'张三',
age:18
};
// 获取属性对应的值
console.log(person.name);
console.log(person['name']);
// 添加
person.sex='男';
person['addr']='石家庄';
// 更改
person.age=20;
person['age']=11;
// 删除
delete person.age;
// 遍历像js的数组一样
for (key in person) {
// key 是属性 , 字符串类型
console.log(person[key]);
}
js-内置对象
math对象
Math和其他的对象不同,它不是一个构造函数,它属于一个工具类不用创建对象,它里边封装了数学运算相关的属性和方法
// 保留两位小数
console.log(3.1415926.toFixed(2));
// 随机数 大于等于0 且小于1
console.log(Math.random() );
// 向下取整
console.log(Math.floor(2.9));
// 向上取整
console.log(Math.ceil(2.2));
// 四舍五入
console.log(Math.round(6.51));
console.log(Math.round(3.5));
// 最大值
console.log(Math.max(1,2,4,5,7,11,23));
// 最小值
console.log(Math.min(1,2,0.2,22));
// 几次幂 3的2次方
console.log(Math.pow(3,2));
// 开平方
console.log(Math.sqrt(4));
function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1)+min);
}
console.log(getRandom(21,55));
date 对象
// 创建时间对象
var date = new Date();
// Wed Aug 11 2021 15:18:53 GMT+0800 (中国标准时间)
console.log(date);
// 1628666364026 获取时间原点到当前时间的毫秒数
console.log(date.valueOf());
console.log(date.getTime());
// 年
console.log(date.getFullYear());
// 月从0开始,需要+1
console.log(date.getMonth()+1);
// 日
console.log(date.getDate());
// 星期 0 是周日,1是周一
console.log(date.getDay());
// 时
console.log(date.getHours());
// 分
console.log(date.getMinutes());
// 秒
console.log(date.getSeconds());
array 对象
// 字面量
var arr1 = [1,2,34];
// new
var arr2 = new Array(2,5,1);
// 判断是否是数组 instanceof 或 isArray
console.log(arr1 instanceof Array);
console.log(Array.isArray(arr2));
// push 尾部追加
arr1.push(1);
// 尾部删除
arr1.pop();
// 头部追加
arr1.unshift(2);
// 头部删除
arr1.shift();
arr1 = [1,2,3,4];
// 反转
arr1.reverse();
console.log(arr1);
arr1 = [1,12,11,2];
// 排序,只会按照ASCII码进行比较
// 1,11,12,2
arr1.sort();
// 12,11,2,1
arr1.sort(function(a,b){
// a-b 升序 , b-a 降序
return b-a;
});
// 箭头函数写法
// 1,2,11,12
arr1.sort((a,b)=> a-b);
console.log(arr1);
// 第一个参数是数据,第二个参数是索引
arr1.forEach(function(item,index){
console.log(item,index);
});
arr1.forEach((item,index)=>console.log(item,index));
// filter : 过滤,不符合条件的就不要了
// 只要偶数
var arr3 = arr1.filter(function(item,index){
if(item % 2 == 0){
return true;
}else{
return false;
}
});
console.log(arr3);
var arr4 = arr1.filter( item=> item%2==1 ? true : false );
console.log(arr4);
// map : 更改数组
var arr = [1,2,3,4,5,6];
// 数组中 奇数 +10 偶数 +5
var arr5 = arr.map(function(item){
if(item % 2 == 0){
return item+5;
}else{
return item+10;
}
});
console.log(arr5);
var arr6 = arr.map(item=> item % 2 == 0 ? item+5 : item+10 );
console.log(arr6);
var arr = [1,2,3,4,5,6,7,8,9];
// 获取对应数据的索引,找不到返回-1
console.log(arr.indexOf(21));
// 获取最后一次出现的索引,找不到返回-1
console.log(arr.lastIndexOf(3));
// 数组转字符串
console.log(arr.join('-'));
var arr1 = [1,2,3];
var arr2 = [11,12,13];
var arr3 = arr1.concat(arr2);
console.log(arr3);
// 删除,并返回要删除的数据
var arr = [1,2,3,4,5];
arr.splice(2,1);
console.log(arr);
arr = [];