博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
引用类型--单体内置对象
阅读量:4704 次
发布时间:2019-06-10

本文共 4035 字,大约阅读时间需要 13 分钟。

JavaScript中定义了两个单体内置对象:Global和Math

Global对象

Global对象是JavaScript中最特别的一个对象。不属于任何其他对象的属性和方法,最终都是它的属性和方法。实际上,没有全局变量或全局作用域,所有在全局作用域中定义的属性和函数,都是Global对象的属性。

Global对象包含了一些有用的方法:

1.URI编码方法

Global对象的encodeURI()encodeURIComponent()方法可以对URI进行编码,encodeURI()主要用于整个URI,而encodeURIComponent()主要用于对URI中的某一段进行编码。encodeURI()不会对本身属于URI的特殊字符进行编码(如,冒号、正斜杠、问号和井号),encodeURIComponent()会对发现的任何非标准字符进行编码。

var uri = "http://www.cnblogs xxyh.com#login";alert(encodeURI(uri));          // "http://www.cnblogs%20xxyh.com#login"alert(encodeURIComponent(uri)); // "http%3A%2F%2Fwww.cnblogs%20xxyh.com%23login"

encodeURI()encodeURIComponent()对应的有两个解码方法decodeURI()decodeURIComponent()其中,decodeURI()只能对使用encodeURI()替换的字符进行解码。decodeURIComponent()能够对encodeURIComponent()进行解码。

var uri = "http%3A%2F%2Fwww.cnblogs%20xxyh.com%23login";alert(decodeURI(uri));      // "http%3A%2F%2Fwww.cnblogs xxyh.com%23login"alert(decodeURIComponent(uri)); // "http://www.cnblogs xxyh.com#login"

2.eval()方法

eval()只接受一个参数,即要执行的JavaScript字符串,例如:

eval("alert('hello')");

上面这行代码等价于:

alert('hello');

当解析器调用eval()方法时,会将传入的参数作为实际的JavaScript语句解析,然后将执行结果插入原来的位置。通过eval()执行的代码被认为是包含该次调用的执行环境的一部分,因此被执行的代码具有与该执行环境相同的作用域链。这意味着通过eval()执行的代码可以引用在包含环境中定义的变量。

var msg = "good morning";eval("alert(msg)");        // "good morning"

同样地,可以在eval()中定义一个函数,然后再在该调用的外部引用这个函数:

eval("function sayHi() {alert('hello')}");sayHi();

对于变量也是一样:

eval("var msg = 'hello world'");alert(msg);        // "hello world"

在eval()中创建的任何变量或函数都不会被提升,在解析代码时,它们被包含在一个字符串中;只有在eval()执行时才创建。

3.Global对象的属性 

Global对象的所有属性:

属性 说明 属性 说明
undefined 特殊值undefined Date 构造函数Date
NaN 特殊值NaN RegExp 构造函数RegExp
Infinity 特殊值Infinity Error 构造函数Error
Object 构造函数Object EvalError 构造函数EvalError
Array 构造函数Array RangeError 构造函数RangeError
Function 构造函数Function ReferenceError 构造函数ReferenceError
Boolean 构造函数Boolean SyntaxError 构造函数SyntaxError
String 构造函数String TypeError 构造函数TypeError
Number 构造函数Number URIError 构造函数URIError

ECMAScript 5明确禁止给undefinedNaNInfinity赋值,这样做即使在非严格模式下也会导致错误。

4.window对象

JavaScript没有指出如何直接访问Global对象,但是web浏览器都是将它作为window对象的一部分加以实现的。因此,在全局作用域中声明的所有变量和函数,都称为window对象的属性。

var color = "red";function sayColor() {    alert(window.color);}window.sayColor();

上面定义了一个全局变量color和全局函数sayColor()方法,在函数内部通过window.color来访问color变量,说明全局变量color是window对象的属性。然后通过window.sayColor()来调用sayColor()方法,说明sayColor()是window对象的方法。

取得Global对象的方法:

var global = function () {    return this;}();

Math对象

JavaScript提供了Math对象,用于提供快速的计算功能。

1.Math对象的属性

Math对象的属性大多是一些数学计算中的特殊值。

2.min()和max()方法

min()和max()方法用于确定一组数值中的最小值和最大值。这两个方法都可以接收任意多个数值参数。

var max = Math.max(4,89,65,34);alert(max);    // 89var min = Math.min(4,89,65,34);alert(min);

查找数值中的最大值和最小值,可以使用如下的方式调用apply()方法:

var values = [4,89,65,34];var max = Math.max.apply(Math, values);

3.舍入方法

  • Math.ceil():向上舍入,即向上舍入最为接近整数
  • Math.floor()向下舍入,即向下舍入最为接近的整数
  • Math.round()标准舍入,即四舍五入为最接近的整数
alert(Math.ceil(11.4)); // 12alert(Math.ceil(11.5)); // 12alert(Math.ceil(11.8)); // 12alert(Math.floor(11.4)); // 11alert(Math.floor(11.5)); // 11alert(Math.floor(11.8)); // 11alert(Math.round(11.4)); // 11alert(Math.round(11.5)); // 12alert(Math.round(11.8)); // 12alert(Math.ceil(-11.4)); // -11alert(Math.ceil(-11.5)); // -11alert(Math.ceil(-11.8)); // -11alert(Math.floor(-11.4)); // -12alert(Math.floor(-11.5)); // -12alert(Math.floor(-11.8)); // -12alert(Math.round(-11.4)); // -11alert(Math.round(-11.5)); // -11alert(Math.round(-11.8)); // -12,这里特别需要注意,Math.round(-11.5)和Math.round(-11.8)结果不一样。

4.random()方法

Math.random()方法返回大于等于0小于1的一个随机数。套用下面的公式,就可以利用Math.random()从某个整数范围内随机选择一个值。

值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能的值)

例如:

var num = Math.floor(Math.random() * 10 + 1);//获取一个1到10之间的整数var num = Math.floor(Math.random() * 9 + 2);//选择一个介于2到10之间的值

以下函数可以直接指定随机范围(整数)

function selectFrom(lowerValue, upperValue) {    var choices = upperValue - lowerValue +1;    return Math.floor(Math.random() * choices + lowerValue);}var num = selectFrom(2, 10);alert(num);     //介于2和10之间(包括2和10)的一个数值

5.其他方法

Math对象还提供了一些完成各种个中简单或复杂的计算。

ECMA-262 规定了这些方法,但是不同的实现可能精确度不同。

转载于:https://www.cnblogs.com/lmjZone/p/7919573.html

你可能感兴趣的文章
oracle基本DML语句之update语句
查看>>
[ Java ] [ Eclipse ] 导出/导入Eclipse的workspace配置(备份Eclipse配置)
查看>>
cf掉分记——Avito Code Challenge 2018
查看>>
20180808 考试记录
查看>>
Powershell批量安装SNMP服务
查看>>
SEVERE: Unable to process Jar entry [avassist xxxx.class]
查看>>
spring boot部署中executable的系统服务
查看>>
Django模型层
查看>>
案例:手动输入一个字符串,所有字符反转,大小写相互转
查看>>
oracle 监控
查看>>
Oracle计算时间函数(numtodsinterval、numtoyminterval)
查看>>
虚函数和纯虚函数有以下所示方面的区别(转)
查看>>
遍历中的数组删除数据问题
查看>>
MyEclipse------PreparedStatement使用方法
查看>>
python之路——web(Javascript)
查看>>
POJ2513——Colored Sticks(Trie树+欧拉回路+并查集)
查看>>
伊吹萃香 (Standard IO)
查看>>
localForage——轻松实现 Web 离线存储(转)
查看>>
JS整理
查看>>
使用C#开发ActiveX控件
查看>>