深入理解JavaScript单体内置对象


Posted in Javascript onJune 06, 2016

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

Global对象

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

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

1.URI编码方法

Global对象的encodeURI()和encodeURIComponent()方法可以对URI进行编码,encodeURI()主要用于整个URI,而encodeURIComponent()主要用于对URI中的某一段进行编码。

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

encodeURI()不会对本身属于URI的特殊字符进行编码(如,冒号、正斜杠、问号和井号),encodeURIComponent会对发现的任何非标准字符进行编码。

与encodeURI()和encodeURIComponent()对应的有两个解码方法decodeURI和decodeURIComponent

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

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

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')}");

对于变量也是一样:

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

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

3.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对象的属性大多是一些数学计算中的特殊值。

深入理解JavaScript单体内置对象

2.min()和max()方法

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

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

var 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():向上舍入,即进一法,只要小数位不为0就向上取整
• Math.floor():向下舍入,即取整法,舍去小数位
• Math.round():标准舍入,即四舍五入法

示例:

alert(Math.ceil(11.4)); // 12
alert(Math.ceil(11.5)); // 12
alert(Math.ceil(11.8)); // 12

alert(Math.floor(11.4)); // 11
alert(Math.floor(11.5)); // 11
alert(Math.floor(11.8)); // 11

alert(Math.round(11.4)); // 11
alert(Math.round(11.5)); // 12
alert(Math.round(11.8)); // 12

alert(Math.ceil(-11.4)); // -11
alert(Math.ceil(-11.5)); // -11
alert(Math.ceil(-11.8)); // -11

alert(Math.floor(-11.4)); // -12
alert(Math.floor(-11.5)); // -12
alert(Math.floor(-11.8)); // -12

alert(Math.round(-11.4)); // -11
alert(Math.round(-11.5)); // -11
alert(Math.round(-11.8)); // -12

4.random()方法

Math.random()方法返回一个随机数(0≤r<1)。

例如,获取一个1到10之间的整数:

var num = Math.floor(Math.random() * 10 + 1);

5.其他方法

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

深入理解JavaScript单体内置对象

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

以上这篇深入理解JavaScript单体内置对象就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
Feb 09 Javascript
打印json对象的内容及JSON.stringify函数应用
Mar 29 Javascript
jCallout 轻松实现气泡提示功能
Sep 22 Javascript
JS实现点击链接取消跳转效果的方法
Jan 24 Javascript
Javascript中获取对象的原型对象的方法小结
Feb 25 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
Oct 23 Javascript
原生JS轮播图插件
Feb 09 Javascript
JavaScript数组迭代方法
Mar 03 Javascript
tab栏切换原理
Mar 22 Javascript
JS原生轮播图的简单实现(推荐)
Jul 22 Javascript
jquery ajaxfileupload异步上传插件
Nov 21 jQuery
详解VUE Element-UI多级菜单动态渲染的组件
Apr 25 Javascript
基于JS实现省市联动效果代码分享
Jun 06 #Javascript
对象转换为原始值的实现方法
Jun 06 #Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
Jun 06 #Javascript
node-http-proxy修改响应结果实例代码
Jun 06 #Javascript
浅谈bootstrap源码分析之tab(选项卡)
Jun 06 #Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
Jun 06 #Javascript
jquery插件方式实现table查询功能的简单实例
Jun 06 #Javascript
You might like
PHP中strtotime函数使用方法详解
2011/11/27 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
setTimeout学习小结
2017/02/08 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
使用python实现baidu hi自动登录的代码
2013/02/10 Python
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
Python单元和文档测试实例详解
2019/04/11 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
药剂学专业应届生自荐信
2013/09/29 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
医德医风自我评价
2014/09/19 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS