对象=属性+方法;
在面向对象的编程中,一般都不能直接使用原本就有的对象。因为对象需要保留自己的数据。所以在使用、处理对象时,需要给原始数据先创建一个“副本”,防止数据发生冲突。这个创建副本并赋予实际操作的数据的行为,叫实例化。
使用new运算符进行实例化:
var 变量名=new 对象名([参数……])
调用属性/方法:
变量名.方法名(参数[…]); 或者
变量名.属性名[=设定值];
不生成实例(副本)就可以直接使用的例外情况:静态属性/静态方法。
对象名.方法名(参数[]);
对象名.属性名.[=设定值];
**内置对象:
Object: 提供成为所有对象的雏形的功能;
Array: 提供给用来操作数组的手段;
Map/WeakMap: 提供操作由键/值组成的关联数组的手段;
Set/WeakSet: 提供管理唯一值的集合手段;
String: 提供用来操作字符串的手段;
Boolean: 提供操作逻辑值的手段;
Number: 提供用来操作数字的手段;
Function: 提供用来操作函数的手段;
Symbol: 提供用来操作Symbol的手段;
Math: 提供执行数学计算的手段;
Date: 提供操作日期的手段;
RegExp: 提供正则表达式相关功能;
Error/XxxxxError: 管理错误信息;
Proxy: 提供自定义对象行为的手段;
Promise: 提供用来实现异步处理的手段;
以上相当于JavaScript的内置公式。在执行一些复杂操作时,套用公式可以提高效率。
基本数据类型不使用 new 运算符。(object、Array、String、Bolean、Number、Symbol)以免代码过于冗余。
**包装对象:有点像Java里面的package、打包好的公式。
操作字符
分类 | 成员 | 概述 |
检索(查找) | indexOf(subtr[,start]) | 从字符串前方(第start+1个字符)开始检索子字符串substr |
lastIndexOf(substr[,start]) | 从字符串的后方(第start+1个字符)开始检索子字符串substr | |
startsWith(search[,pos]) | 字符串是否为指定的子字符串search开头(参数pos是检索开始位置) | |
endsWith(search[,pos]) | 字符串是否为指定的子字符串search结束 | |
includes(search[,pos]) | 字符串是否包含指定的字符串search | |
部分文字列 | charAt(n) | 获取第n+1个字符(和数组一样第一个为0) |
slice(start[,end]) | 从字符串中提取start+1~end的字符 | |
substring(start[,end]) | 从字符串中提取start+1~end的字符 | |
substr(start[,cnt]) | 从字符串中从第start+1个字符开始提取cnt个字符 | |
split(str[,limit]) | 使用分隔字符串str分割字符串,并以数组获取其结果(参数limit是最大分割数) | |
正则表达式 | match(reg) | 使用正则表达式检索字符串,并获取匹配的子字符串 |
replace(reg,rep) | 使用正则表达式检索字符串,并将匹配的部分替换为子字符串rep | |
search(reg) | 使用正则表达式检索字符串,获取第一个匹配字符的位置 | |
大文字<=> 小文字 | toLowerCase() | 转换为小写 |
toUpperCase() | 转换为大写 | |
编码转换 | charCodeAt(n) | 将第n+1个字符串转换为Latin-1编码 |
*fromCharCode(c1,c2...) | 将Latin-1编码c1,c2...转换为字符 | |
codePointAt(n) | 将第n+1个字符转换为UTF-16的码点值 | |
*fromCodePoint(num,...) | 根据点码值生成字符串 | |
其他 | concat() | 在字符串的后方连接字符串 |
repeat(num) | 获取重复num次字符串的新字符串 | |
trim() | 删除字符串前后的空白 | |
length | 获取字符串的长度 |
*是静态方法
String方法中,有substring、slice、substr3种方法用于从原始字符串中提取子字符串。
其中substring、slice和substr差异如下:
substring/slice方法 使用开始位置-结束位置设置要提取部分;
substr 使用开始位置的字符个数设置要提取的部分;
操作数字
分类 | 成员 | 概述 |
属性 | *MAX_VALUE | Number可以表示最大值 |
*MAX_SAFE_INTEGER | Number可以安全地表示最大值 | |
*MIN_VALUE | Number可以表示最小值 | |
*MIN_SAFE_INTEGER | Number可以安全地表示最小值 | |
*EPSILON | 1和Number可以表示的比1大的最小值的差 | |
NaN | 不是数字(not a number) | |
*NEGATIVE_INFINITY | 负无穷 | |
*POSITIVE_INFINITY | 正无穷 | |
方法 | toString(rad) | 转换为rad进制数的值(rad是2~36) |
toExponential(dec) | 转换为指数形式(dec是小数点以下的位数) | |
toFixed(dec) | 在小数点第dec位四舍五入 | |
toPrecision(dec) | 转换为指定的位数(位数不够时补0) | |
*isNaN(num) | 判断是否NaN | |
*isFinite(num) | 判断是否有限值 | |
*isInteger(num) | 判断是否为整数值int | |
*isSafeInteger(num) | 判断是否Safe—integer | |
*parseFloat(str) | 将字符串转换为浮点数 | |
*parseInt(str[,radix]) | 将字符串转换为整数(参数radix是基数) |
执行基本的数学运算——Math对象
分类 | 成员 | 概述 |
基本 | abs(num) | 绝对值 |
clz(num) | 32无符号整形数字的二进制开头的0的个数 | |
max(num1,num2...) | 最大值 | |
min(num1,num2...) | 最小值 | |
pow(base,p) | 幂运算(基数(base)的(p)次方 | |
random() | 0~1随机数 | |
sign(num) | 判断正负,正=1;负=-1;0=0; | |
进位/舍去 | ceil(num) | 向上取整 |
floor(num) | 向下取整 | |
round(num) | 四舍五入 | |
trunc(num) | 去尾法 | |
平方根 | *SQRT1_2 | 1/2的平方根 |
*SQRT2 | 2的平方根 | |
sqrt(num) | 平方根 | |
cbrt(num) | 立方根 | |
hypot(x1,x2,...) | 参数的平方和的平方根 | |
三角函数 | *PI | 圆周率 |
cos()/sin()/tan()/ | cos/sin/tan 括号里写对应的兀值,如0.3兀 | |
acos()/asin()/atan() | 反函数 | |
cosh()/sinh()/tanh() | 双曲三角函数函数值 | |
acosh()/asinh()/atanh() | 双曲三角函数函数值 | |
指/对数 | *E | 自然对数的底数 |
*LN2 | 2的自然对数 | |
*LN10 | 10的自然对数 | |
*LOG2E | 以2为底数,e的对数 | |
*LOG10E | 以10为底数,e的对数 | |
log(num) | 自然对数 | |
log10(num) | 以10为底数的对数 | |
log2(num) | 以2为底的自然对数 | |
log1(num) | 参数+1后的自然对数 | |
exp(num) | 指数函数(e的累成) | |
expm1(num) | e的num次方-1 |
*为只读
调用方法:
Math.方法名(参数);
反复调用一个对象时可以使用with语句,使代码更简洁
with(console){
log(Math.abs(-100);
log(Math.max(20,30,40);
log(Math.min(4,5,6);
}
但是:
代码块内的处理速度会下降;
代码由于with修饰的方法会变得不明确。