单体内置对象
《JavaScript高级程序设计》:由 ECMAScript 实现提供的、不依赖于宿主环境的对象,这些对象在 ECMAScript 程序执行前就已经存在了。
开发人员无需显式地实例化内置对象,因为他们已经实例化了
如 Math 和 Global
Math
Math 是 Javascript 的原生对象,提供各种数学功能。
该对象不是构造函数,不能生成实例
所有的属性和方法都必须在 Math 对象上调用
静态属性
Math 的静态属性,提供以下一些数学常数。
Math.E : 常数 e => 2.718281828459045
Math.LN2 : 2 的自然对数 => 0.6931471805599453
Math.LN10 : 10的自然对数 => 2.302585092994046
Math.LOG2E : 以 2 为底的 e 的对数 => 1.4426950408889634
Math.LOG10E : 以 10 为底的 e 的对数 => 0.4342944819032518
Math.PI : 常数 π => 3.141592653589793
Math.SQRT1_2 : 0.5 的平方根 => 0.7071067811865476
Math.SQRT2 : 2 的平方根 => 1.4142135623730951
注意 : 这些属性都是只读的 不能修改
静态方法
Math.abs()
Math.abs() 方法返回参数值的绝对值
Math.abs(1) => 1
MAth.abs(-1) => 1
Math.max()
Math.max() 方法返回参数之中最大的那个值
如果参数为空 Math.max() 返回 -Infinity
Math.max(2,-1,5) => 5
Math.max() => -Infinity
Math.min()
Math.min() 方法返回参数中最小的那个值
如果参数为空 Math.min() 返回 Infinity
Math.min(2,-1,5) => -1
Math.min() => Infinity
Math.floor()
Math.floor() 方法返回 小于 或 等于 参数值的最大整数 地板值
Math.floor(3.2) => 3
Math.floor(-3.2) => -4
Math.ceil()
Math.ceil() 方法返回 大于 或 等于 参数值的最小整数 天花板值
Math.ceil(3.2) => 4
Math.ceil(-3.2) => -3
Math.floor() 结合 Math.ceil() 返回数值的整数部分
function ToInteger(x) {
x = Number(x);
return x > 0 ? Math.floor(x) : Math.ceil(x)
}
ToInteger(3.2) => 3
ToInteger(3.5) => 3
ToInteger(3.8) => 3
ToInteger(-3.2) => -3
ToInteger(-3.5) => -3
ToInteger(-3.8) => -3
Math.round()
Math.round() 方法用于四舍五入
Math.round(0.1) => 0
Math.round(0.5) => 1
Math.round(0.6) => 1
注意
它对负数的处理 主要是对 0.5 的处理
Math.round(-1.1) => -1
Math.round(-1.5) => -1
Math.round(-1.6) => -2
Math.random()
Math.random() 方法返回 0 到 1 之间的一个伪随机数,可能等于 0 ,但是一定小于 1
Math.random() => 0.7151307314634323
用法
1、任意范围的随机数生成函数 如下
function getRandomArbitirary(min,max){
return Math.random() * (max - min) + min
}
getRandomArbitirary(1.5,6.5) => 2.4942810038223864
2、任意范围的随机整数生成函数如下
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
getRandomInt(1, 6) => 5
3、返回随机字符的例子如下
function random_str(length) {
var ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
ALPHABET += 'abcdefghijklmnopqrstuvwxyz';
ALPHABET += '0123456789-_';
var str = '';
for (var i = 0; i < length; ++i) {
var rand = Math.floor(Math.random() * ALPHABET.length);
str += ALPHABET.substring(rand, rand + 1);
}
return str;
}
random_str(6) => "NdQKOr"
Math.pow()
Math.pow() 方法返回以第一个参数为底数、第二个参数为指数的幂运算值
Math.pow(2,2) => 4
Math.pow(2,3) => 8
计算 圆 面积的方法
let radius = 20
let area = Math.PI * Math.pow(radius,2)
Math.sqrt()
Math.sqrt() 方法返回参数值的 平方根 如果参数是一个 负值 则 返回 NaN
Math.sqrt(4) => 2
Math.sqrt(-4) => NaN
Math.log()
Math.log() 方法返回常数 e 为底的自然数值
Math.log(Math.E) => 1
Math.log(10) => 2.302585092994046
如果要计算以10为底的对数,可以先用Math.log求出自然对数,然后除以Math.LN10
求以2为底的对数,可以除以Math.LN2。
Math.log(100)/Math.LN10 => 2
Math.log(8)/Math.LN2 => 3
Math.exp()
Math.exp() 方法返回常数 e 的参数次方
Math.exp(1) => 2.718281828459045
Math.exp(3) => 20.085536923187668
三角函数方法
Math对象还提供一系列三角函数方法
Math.sin():返回参数的正弦(参数为弧度值)
Math.cos():返回参数的余弦(参数为弧度值)
Math.tan():返回参数的正切(参数为弧度值)
Math.asin():返回参数的反正弦(返回值为弧度值)
Math.acos():返回参数的反余弦(返回值为弧度值)
Math.atan():返回参数的反正切(返回值为弧度值)
Math.sin(0) => 0
Math.cos(0) => 1
Math.tan(0) => 0
Math.sin(Math.PI / 2) => 1
Math.asin(1) => 1.5707963267948966
Math.acos(1) => 0
Math.atan(1) => 0.7853981633974483
Global
Global(全局)对象是ECMAScript中特殊的一个对象,不管你从什么角度看这个对象都是不存在的
Global对象某种意义上作为一种 “兜底儿对象” 来定义的
换句话说不属于任何其他对象的属性和方法,最终都是它的属性和方法
事实上没有全局变量和全局函数;所有全局作用域中定义的属性和函数,都是Global对象的属性
像 isNaN()、isFinite()、parseFloat()、parseInt() 实际上都是 Global 对象的方法,除此之外,还有
获取方式
let global = function(){
return this
}
URI编码方法
有时候访问自己服务器上的中文名资源,复制网址后粘贴却变成了没有中文的地址
其实这和Global对象的编码方法encodeURI(str)、encodeURIComponent(str)有关
这可以对URI(Uniform Resource Identifiers)进行编码,它们用特殊的字符替换无效的字符,使浏览器可以接受和理解
encodeURI()
对 整个 uri 进行编码,但不会对本身属于uri的特殊字符进行编码
encodeURI()不会对本身属于URI的特殊字符进行编码,例如:冒号、正斜杠、问号和井号
encodeURI('http://www.yama.gz.cn/resourse/作者.jpeg')
=> http://www.yama.gz.cn/resourse/%E4%BD%9C%E8%80%85.jpeg
encodeURIComponent()
对 uri 中的某一段进行编码,会对任何非标准字符进行编码
encodeURIComponent('http://www.yama.gz.cn/resourse/作者.jpeg')
=> http%3A%2F%2Fwww.yama.gz.cn%2Fresourse%2F%E4%BD%9C%E8%80%85.jpeg
decodeURI()
对 encodeURI() 替换的字符进行解码
decodeURI('"http://www.yama.gz.cn/resourse/%E4%BD%9C%E8%80%85.jpeg"')
=> http://www.yama.gz.cn/resourse/作者.jpeg"
decodeURIComponent()
对 encodeURIComponent() 进行解码
decodeURIComponent('http://www.yama.gz.cn/resourse/%E4%BD%9C%E8%80%85.jpeg')
=> 没问题:http://www.yama.gz.cn/resourse/作者.jpeg
编码解码说明
对应的两个解码方法有 decodeURI()、decodeURIComponent()
其中 decodeURI() 只能对使用 encodeURI() 编码的字符进行解码
而 decodeURIComponent() 由于他对应的编码方法非常全,所以它可以解码任何特殊字符的编码
eval () 方法
eval() 方法用于接受一个字符串参数(这个参数可以不用加引号)
这个参数将会作为 JS代码 被执行
这是一个危险的函数,eval可能导致被运行恶意的代码,
并且它本身的速度比较慢
在必须使用的地方可以使用 window.Function() 代替它
(function(){}).constructor === Function
Function 构造函数创建一个新的 Function 对象
直接调用此构造函数可用动态创建函数,但会遇到和 eval 类似的的安全问题和(相对较小的)性能问题。
然而,与 eval 不同的是,Function 创建的函数只能在全局作用域中运行
Function 创建的函数明确只能在全局作用域中运行,所以不用思考太多
标签:返回,min,对象,第八篇,Global,参数,Math
From: https://www.cnblogs.com/caix-1987/p/17265012.html