对象
概念
- 含义:在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象
- 属性:事物的特征,在对象中用属性表示
- 方法:事物的行为,在对象中用方法表示
- 自定义对象、内置对象属于ECMAScript;浏览器对象属于JS独有
创建方法
对象字面量创建对象{}
属性或方法采取键值对的形式,多个属性或方法中间逗号分隔,方法冒号后面是匿名函数
var obj = {
uname: 'cercis',
age: 23,
sex: '女',
greet: function() {
console.log('hello world!');
}
}
console.log(obj.uname); //调用对象的属性,1. 对象名.属性名
console.log(obj['age']); //调用对象的属性, 2.对象名['属性名']
obj.greet(); //调用对象的方法
new Object创建对象
var obj = new Object(); //创建一个空对象
obj.uname = 'chinensis';
obj.sex = '女';
obj.age = 24;
obj.sayHi = function() {
console.log('hello world');
}
//(1)利用 = 赋值的方法,添加对象的属性和方法
//(2)每个属性和方法之间 ; 结束
console.log(obj.uname);
console.log(obj['sex']);
obj.sayHi();
构造函数创建对象
//语法格式
// function 构造函数名() {
// this.属性 = 值;
// this.方法 = function() {}
// }
// new 构造函数名();
function Star(name, sex, age) {
this.name = name;
this.sex = sex;
this.age = age;
this.sing = function(sang) {
console.log(sang);
}
}
var zjx = new Star('Lay', '男', 27); //调用函数返回一个对象
//遍历对象
for (var k in dog) {
console.log(k); //遍历输出属性名
console.log(dog[k]); //遍历输出属性值
}
变量和属性
- 相同点:存储数据
- 不同点:
变量:单独声明并赋值,使用的时候直接写 变量名,单独存在
属性:在对象中无需声明,使用的时候必须是 对象.属性
函数和方法
- 相同点:实现某种功能
- 不同点:
函数:单独声明并调用,函数名(),单独存在
方法:在对象里,调用时 对象.方法
构造函数和对象
- 相同点:实现某种功能
- 不同点:
构造函数:抽象了对象的公共部分,封装到函数里,泛指某一大类
对象:特指某一个,通过new关键字创建对象的过程,称为对象实例化
new 关键字执行过程
- new构造函数在内存中创建了一个空的对象
- this指针指向创建的空对象
- 执行构造函数的代码,给空对象添加属性和方法
- 返回这个对象
遍历对象
for(变量 in 对象){}
内置对象
含义
J语言自带的一些对象,供开发者使用,提供了一些常用的、基本而必要的功能(属性和方法)
使用
Math对象
不是一个构造函数,不需要new来调用,而是直接使用里面的属性和方法
//封装自己的数学对象
var myMath = {
PI: 3.1415926,
max: function() {
var max = arguments[0];
for (var i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
}
console.log(myMath.PI * 2 * 2);
console.log(Math.PI * 2 * 2);//调用内置对象math
console.log(myMath.max(3, 5, 33332, 6, 6, 3, 3, 54, 3333));
console.log(Math.max(3, 5, 33332, 6, 6, 3, 3, 54, 3333));//调用内置对象math
简单使用
//绝对值
console.log(Math.abs('-1')); //隐式转换,将字符型-1转换为数字型
//取整
//向下取整
console.log(Math.floor('1.9'));
//向上取整
console.log(Math.ceil(2.1));
//四舍五入取整
console.log(Math.round(2.5));
//随机数,Math.random()随机返回一个小数,在[0,1)
console.log(Math.random());
//得到两个数之间的随机整数,并且包含这两个整数
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(12, 20));
//随机点名
var arrName = ['张三', '李四', '王五', '黄六', '赵七'];
console.log(arrName[getRandom(0, arrName.length - 1)]);
日期对象
是一个构造函数,必须使用new来调用
//日期对象
var date = new Date(); //无参数,返回系统当前时间
console.log(date);
var date1 = new Date(2021, 8, 27); //实际输出月份+1
console.log(date1);
//格式化日期
console.log(date.getFullYear());
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
if (day > 26) month += 1;
alert(month);
var weekIndex = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
var week = date.getDay();
console.log('当前时间:' + year + '年' + month + '月' + day + '日' + weekIndex[week]);
封装当前时间
function getTime() {
var time = new Date();
var hour = time.getHours();
var minute = time.getMinutes();
var second = time.getSeconds();
hour = hour < 10 ? '0' + hour : hour;
minute = minute < 10 ? '0' + minute : minute;
second = second < 10 ? '0' + second : second;
return hour + ':' + minute + ':' + second;
}
console.log(getTime());
获得Date总的毫秒数
//1.通过valueOf() getTime()
var date3 = new Date();
console.log(date3.valueOf());
console.log(date3.getTime());
//2.简单写法
var date4 = +date3;
var date4 = +new Date();
console.log(date4);
//3.H5新增
console.log(Date.now());
数组对象
参考文档: 数组.
字符串对象
-
基本包装类型:简单数据类型包装为复杂数据类型
- 简单数据类型: var str = ‘basictype’;
- 简单数据类型包装为复杂数据类型: var temp = new String(‘basictype’);
- 临时变量的值赋给str: str = temp;
- 销毁临时变量:temp = null;
-
字符串的不可变性:对字符串进行拼接或重新赋值,都是开辟一个新的内存空间,原来的内容依旧存在。因此,不可大量拼接字符串,会有效率问题
-
返回字符位置
- 根据位置返回字符 charAt(index)
- 根据位置返回字符ASCI码 charCodeAt(index)。判断用户按下了哪个键
- H5新增:根据位置返回字符 str[index]
//查找字符串“abcihfhhgisiiehsh”中i出现的位置及次数
var str = 'abcihfhhgisiiehsh';
var index = [];
var count = 0;
var j = 0;
for (j; j < str.length;) {
if (str.indexOf('i', j) === -1) break;
else {
index[index.length] = str.indexOf('i', j);
j = str.indexOf('i', j) + 1;
count++;
}
}
console.log('位置:' + index + ' 次数:' + count);
//返回数组['pueple','blue','red','pink','orange','green','pink']中pibk出现的位置和次数
var arrColor = ['pueple', 'blue', 'red', 'pink', 'orange', 'green', 'pink'];
var index = arrColor.indexOf('pink');
var count = 0;
while (index !== -1) {
console.log(index);
count++;
index = arrColor.indexOf('pink', index + 1);
}
console.log(count);
//统计 "abhdhadsoaioso"中出现次数最多的字符,并统计次数
var str = 'abhdhadsoaioso';
var obj = {}; //定义一个对象
var max = -1;
var maxObj = '';
for (var i = 0; i < str.length; i++) {
var pro = str.charAt(i);
if (obj[pro]) {
obj[pro]++;
} else {
obj[pro] = 1;
}
}
console.log(obj);
for (var k in obj) {
if (obj[k] > max) {
max = obj[k];
maxObj = k;
}
}
console.log(maxObj + ':' + max);
- 替换字符 replace(‘被替换字符’,‘替换为的字符’):只会替换第一个字符
- 字符串转化为数组 split(‘分隔符’)
- toUpperCase()转换大写
- toLowerCase()转换小写