单体内置对象
内置对象的概念:不依赖于宿主环境的对象,这些对象在程序之前前就已经存在,不需要再去实例化了。比如Object、Array、String。
所以了解一下常用的这两个,Global和Math对象。
一、Global对象
方法:isNaN(), isFinite(), parseInt(), parseFloat()这些都是Global对象的方法。
此外,还有URL编码方法,encodeURI(), encodeURIComponent()可以对通用资源标识符URI进行编码,以便发送给浏览器。前者用于整个URI,后者是对URI中的某一断进行编码。而且前者不会对本身属于URI的特殊字符进行编码,只对空格编码,而后者是会对它发现的任何非标准字符进行编码,常常用来处理查询参数。
与此对应解码的方法:decodeURI() ,和decodeURIComponent().同样的前者也是只能解析%20对应的空格,其他的无法解码,后者可以进行任意的解析。
eval(): 是一个完整的ECMAScript解析器,只接收一个参数,即要执行的ECMAScript/JavaScript字符串。不会进行变量或者函数的提升,它们是被包含在一个字符串里,只在eval()执行的时候创建。相当于解释执行,同时还能创建变量或函数。
ps:注意在严格模式下在外部访问不到eval函数中创建的任何变量或函数,所以调用会报错,包括使用eval进行赋值也是会报错。
var msg = "hello world"
eval(alert(msg))
eval函数会把alert(msg)作为语句解析,同时会执行这个语句,把最终执行的结果插入到原位置。
执行过程:当解析器发现代码调用eval函数的时候,会把传入的参数当做实际的ECMAScript语句来解析,并把执行结果插入到原位置。通过eval()执行的代码是包含该次调用的执行环境中的一部分,所以被执行的代码与该执行环境具有相同的作用域链,意味着通过eval()执行的代码可以引用在包含环境中定义的变量。
优缺点:解释代码字符串的能力强大。但也有隐患,容易造成代码注入,当在使用它执行用户输入数据的时候,会导致会有恶意用户输入威胁你的站点或应用程序安全的代码。
Global对象的属性:
NaN,undefined,infinity, Boolean,Number,Function,Object,Array,String,RegExp,Date,Error,EvalError,ReferenceError,RangeError,SyntaxError,TypeError,URIError.
访问Global对象的方法:
- 作为window对象的一部分,通过访问window对象的方法调用
- 通过立即调用的函数表达式的形式,返回this。
var global = function() {
return this;
}()
顺便介绍一下立即执行函数的相关知识:
立即执行函数(Immediately Invoked Function Expression,IIFE)是一种在定义后立即执行的函数。其基本语法形式为:
第一种写法
(function() {
// 函数体
})();
第二种写法
function() {
//
}()
立即执行函数的主要用途包括:
-
创建独立作用域:例如,在处理DOM元素时,使用立即执行函数可以为每个元素创建一个独立的作用域,避免全局变量的冲突。
-
初始化模块:在模块化开发中,立即执行函数可以用来初始化模块,确保模块的变量和函数不会污染全局作用域。例如时间处理、创建对象等。
-
避免全局变量污染:通过创建一个独立的作用域,避免外部访问到函数内部的变量,从而防止变量污染。避免重复执行。
-
返回值或者函数。
二、Math对象
Math对象的属性:
Math.E: 自然对数的底数,即e。
Math.PI:π的值。
Math.LN10: 10的自然对数。
Math.LN2: 2的自然对数。
Math.LOG2E: 以2为底e的对数。
Math.LOG10E: 以10为底e的对数。
Math.SORT2: 2的平方根
Math.SORT1_2: 2的平方根的倒数。
Math对象的方法:
1.求最大最小值
Math.min()
Math.max()
ps:求一组数的最大值
var values = [1,34,56,77]
var max = Math.max.apply(Math, values)
好处:避免了多余的循环和在if语句通过判断去求最大最小值。
2.舍入方法
Math.ceil() 向上舍入
Math.floor() 向下舍入
Math.round() 四舍五入
3.随机数的方法
Math.random() 返回大于零小于一的一个随机数,常用于随机显示一些名人名言和新闻事件。
从某个整数范围内随机选择一个值
值 = Math.floor(Math.Random() * 可能值的总数 + 第一个可能的值)
例子:var num = Math.floor(Math.random()*10 +1)
此外常用的方法如下:
1.Math.abs(num) 返回绝对值
2.Math.sqrt(num) 返回平方根```
标签:闭包,补漏,函数,对象,Global,eval,执行,Math
From: https://blog.csdn.net/weixin_45404779/article/details/143188749