JavaScript中的对象分为三种:自定义对象、内置对象、浏览对象。
内置对象
JavaScript提供了多个内置对象:Math、Date、Array、String。
Math
Math对象不是构造函数,它具有数学常数和函数的属性和方法,跟数学相关度的运算可以使用Math中的成员。
属性/方法名 | 功能 |
---|---|
Math.Pl | 圆周率 |
Math.floor() | 向下取整 |
Math.ceil() | 向上取整 |
Math.round() | 四舍五入版,就近取整.注意-3.5结果是-3 |
Math.ads() | 绝对值 |
Math.max() / Math.min() | 求最大和最小 |
Math.random() | 获取范围在[0,1)内的随机数 |
获取指定范围内的随机数:
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
Date对象,
日期函数。Date是一个构造函数,所以使用时需要实例化后才能使用其中具体方法和属性。
实例化:
var now=new Date();
获取指定日期的对象
var future=new Date('2020/2/2');
Date实例化的方法和属性
方法 | 说明 | 代码 |
---|---|---|
getFullYear() | 获取当年 | dObj.getFullYear() |
getMonth() | 获取当月 | dObj.getMonth() |
getDate() | 获取当天日期 | dObj.getDate() |
getDay() | 获取星期几 | dObj.getDay() |
getHours() | 获取当前小时 | dObj.getHours() |
getMinutes() | 获取当前分钟 | dObj,getMinutes() |
getSeconds() | 获取当前秒数 | dObg.getSeconds() |
// 实例化Date对象
var now = new Date();
// 1. 用于获取对象的原始值
console.log(date.valueOf())
console.log(date.getTime())
// 2. 简单写可以这么做
var now = + new Date();
// 3. HTML5中提供的方法,有兼容性问题
var now = Date.now();
数组:
数组的创建有两种方法:
1.var zrr=[1,2,'tset',true]; //字面量方法
2.var arr=new Array(); // new Array()
//2 创建出来的是一个空数组,如果需要使用构造函数Array创建非空数组,可以在创建数组时传入参数。
//如果只传入传入一个参数,则参数规定了数组的长度。
//如果传入了多个参数,则参数称为数组的元素。
instanceof关键字可以判断一个对象是否时某个构造函数的实例。
Array.isArray()可以判断一个对象是否为数组,
var arr = [1, 23];
var obj = {};
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(obj)); // false
添加和删除数组元素的方法
方法名 | 说明 | 返回值 |
---|---|---|
push(参数1,…) | 在数组末尾添加一个或多个元素。 | 返回新的数组长度 |
pop() | 删除数组最后一个元素,把数组长度-1. | 返回它删除的值 |
unshift(参数1,…) | 在数组开头添加一个或多个元素。 | 返回新的长度 |
shift() | 删除数组的第一个元素,数组长度减一 | 返回第一个元素的值 |
数组排序:
reverse()方法可以颠倒数组中元素的顺序,该方法时直接改变原来的数组,并返回新的数组。
sort()方法可以对数组中的元素进行排序,该方法会改变原来的数组,返回新的数组
sort()方法需要传入参数来设置升序、降序排序
function(a,b){ return a-b;} 升序
function(a,b){ return b-a;} 降序
indexOf() 可以在数组中查找给定元素的第一个索引。元素不存在返回-1.
lastlndexOf() 可以在数组中查找最后一个索引。元素不存在返回-1
concat() 可以连接两个或多个数组,不影响原数组。返回一个新数组。
slice() 可以截取数组一部分元素 slice(begin,end) 返回被截取部分的新数组。
splice() 可以让数组删除指定的元素splice(第几个元素,要删除的个数); 返回被删除项目的新数组,这个会影响原数组。
字符串对象
JavaScript还提供了三个特殊的引用类型:String、Number、和Boolean。
基本数据类型是没有属性和方法的,而对象才有属性和方法。
基本包装类型就是把简单数据包装成复杂数据类型,这样简单数据就可以用属性和方法了。
var str = 'andy';
console.log(str.length);
js 把基本数据类型包装为复杂数据类型,其执行过程如下 :
// 1. 生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('andy');
// 2. 赋值给我们声明的字符变量
str = temp;
// 3. 销毁临时变量
temp = null;
字符串的不可变是指里面的值不可变,最然表面上可以发改变内容,但其实是地址变了,在内存中开辟了一个新的内存空间。
当重新给字符串变量赋值的时候,变量之前保存的字符串不会被修改,依然在内存中重新给字符串
赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变。由于字符串的不可变,在大量拼接字符串的时候会有效率问题。
indexOf(‘要查找的字符’,开始的位置); 和 lastlndexOf() 方法都可以根据字符返回位置
charAt(index) 、 charCodeAt(index) 、 str[index] 方法都可以根据位置返回字符,
charAt(index) 返回指定位置的字符,index字符串的索引号。 str。charAt(0)
charCodeAt(index) 获取指定位置处字符的ASCII码 . str.charCodeAt(0)
str[index] 获取指定位置的字符。 html,IE8+支持 和 charAt() 特效。
字符串的简单操作
substr(steart,length) 从 steart 位置开始,取length个数。
substring(start,end) 从 start 位置开始,截取到end位置。
concat(str1,str2,…) 用于连接两个或多个字符串。
slice(start,end) 从 start 位置开始截取刀end位置,
replace()方法 用于在字符串中用一些字符替换另一些字符,字符串.replace(被替换的字串串,要替换的字符串)
spalit()方法 用于切分字符串,它可以将字符串切分成数组,返回一个新数组。 字符串.split(“分割字符”)
简单数据类型和复杂数据类型
简单数据类型:在储存时变量中储存的是值本身,包括string、number、boolean、undefined、null.
复杂数据类型:在储存时变量中储存的仅仅是地址,通过 new 关键字创建的对象(系统对象、自定义对象),Object、Array、Date。
简单数据类型传参:函数的形参可以看做是一个变量,把一个值类型作为参数传给函数时的形参时,其实是把变量在栈空间里的值复制了一份给形参,在方法内部对形参做任何修改,都不会影响到外部变量。
function fn(a) {
a++;
console.log(a);
}
var x = 10;
fn(x);
console.log(x);//11
复杂数据类型传参:函数的形参可以看做是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参操作的是同一个堆地址,操作的同步一个对象。
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);
刘德华
刘德华
张学友
张学友