VIP用户交流群:462197261 收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
在线客服:78895949
tonglan
  • 当前位置:
  • JavaScript内置对象math,global功能与用法实例分析

    本文实例讲述了JavaScript内置对象math,global功能与用法。分享给大家供大家参考,具体如下:

    学习要点:

    1.Global对象
    2.Math对象

    ECMA-262对内置对象的定义是:“由ECMAScript实现提供的、不依赖宿主环境的对象,这些对象在ECMAScript程序执行之前就已经存在了。”意思就是说,开发人员不必显示地实例化内置对象;因为它们已经实例化了。ECMA-262只定义了两个内置对象:Global和Math。

    一.Global对象

    Global(全局)对象是ECMAScript中一个特别的对象,因为这个对象是不存在的。在ECMAScript中不属于任何其他对象的属性和方法,都属于它的属性和方法。所以,事实上,并不存在全局变量和全局函数;所有在全局作用域定义的变量和函数,都是Global对象的属性和方法。

    PS:因为ECMAScript没有定义怎么调用Global对象,所以,Global.属性或者Global.方法()都是无效的。(Web浏览器将Global作为window对象的一部分加以实现)

    Global对象有一些内置的属性和方法:

    1.URI编码方法

    URI编码可以对链接进行编码,以便发送给浏览器。它们采用特殊的UTF-8编码替换所有无效字符,从而让浏览器能够接受和理解。

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

    var box = '//Lee李';
    alert(encodeURI(box));            //只编码了中文
    var box = '//Lee李';
    alert(encodeURIComponent(box));      //特殊字符和中文编码了
    
    

    PS:因为encodeURIComponent()编码比encodeURI()编码来的更加彻底,一般来说encodeURIComponent()使用频率要高一些。

    使用了URI编码过后,还可以进行解码,通过decodeURI()decodeURIComponent()来进行解码

    var box = '//Lee李';
    alert(decodeURI(encodeURI(box)));      //还原    
    var box = '//Lee李';
    alert(decodeURIComponent(encodeURIComponent(box)));    //还原
    
    

    PS:URI方法如上所述的四种,用于代替已经被ECMA-262第3版废弃的escape()unescape()方法。URI方法能够编码所有的Unicode字符,而原来的只能正确地编码ASCII字符。所以建议不要再使用escape()unescape()方法。

    2.eval()方法

    eval()方法主要担当一个字符串解析器的作用,他只接受一个参数,而这个参数就是要执行的JavaScript代码的字符串。

    eval('var box = 100');            //解析了字符串代码
    alert(box);
    eval('alert(100)');              //同上
    eval('function box() {return 123}');      //函数也可以
    alert(box());
    
    

    eval()方法的功能非常强大,但也非常危险。因此使用的时候必须极为谨慎。特别是在用户输入数据的情况下,非常有可能导致程序的安全性,比如代码注入等等。

    3.Global对象属性

    Global对象包含了一些属性:undefined、NaN、Object、Array、Function等等。

    alert(Array); //返回构造函数
    
    

    4.window对象

    之前已经说明,Global没有办法直接访问,而Web浏览器可以使用window对象来实现一全局访问。

    alert(window.Array); //同上
    
    

    二.Math对象

    ECMAScript还为保存数学公式和信息提供了一个对象,即Math对象。与我们在JavaScript直接编写计算功能相比,Math对象提供的计算功能执行起来要快得多。

    1.Math对象的属性

    Math对象包含的属性大都是数学计算中可能会用到的一些特殊值。

    属 性 说 明
    Math.E 自然对数的底数,即常量e的值
    Math.LN10 10的自然对数
    Math.LN2 2的自然对数
    Math.LOG2E 以2为底e的对数
    Math.LOG10E 以10为底e的对数
    Math.PI ∏的值
    Math.SQRT1_2 1/2的平方根
    Math.SQRT2 2的平方根
    alert(Math.E);
    alert(Math.LN10);
    alert(Math.LN2);
    alert(Math.LOG2E);
    alert(Math.LOG10E);
    alert(Math.PI);
    alert(Math.SQRT1_2);
    alert(Math.SQRT2);
    
    

    2.min()和max()方法

    Math.min()用于确定一组数值中的最小值。Math.max()用于确定一组数值中的最大值。

    alert(Math.min(2,4,3,6,3,8,0,1,3));        //最小值
    alert(Math.max(4,7,8,3,1,9,6,0,3,2));      //最大值
    
    

    3.舍入方法

    Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;
    Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;
    Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数;

    alert(Math.ceil(25.9));            //26
    alert(Math.ceil(25.5));            //26
    alert(Math.ceil(25.1));            //26
    
    alert(Math.floor(25.9));            //25
    alert(Math.floor(25.5));            //25
    alert(Math.floor(25.1));            //25
    
    alert(Math.round(25.9));            //26
    alert(Math.round(25.5));            //26
    alert(Math.round(25.1));            //25
    
    

    4.random()方法

    Math.random()方法返回介于0到1之间一个随机数,不包括0和1。如果想大于这个范围的话,可以套用一下公式:

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

    alert(Math.floor(Math.random() * 10 + 1)); //随机产生1-10之间的任意数
    for (var i = 0; i<10;i ++) {
      document.write(Math.floor(Math.random() * 10 + 5)); //5-14之间的任意数
      document.write('<br />');
    }
    
    

    为了更加方便的传递想要范围,可以写成函数:

    function selectFrom(lower, upper) {
      var sum = upper - lower + 1; //总数-第一个数+1
      return Math.floor(Math.random() * sum + lower);
    }
    for (var i=0 ;i<10;i++) {
      document.write(selectFrom(5,10)); //直接传递范围即可
      document.write('<br />');
    }
    
    

    5.其他方法

    方 法 说 明
    Math.abs(num) 返回num的绝对值
    Math.exp(num) 返回Math.E的num次幂
    Math.log(num) 返回num的自然对数
    Math.pow(num,power) 返回num的power次幂
    Math.sqrt(num) 返回num的平方根
    Math.acos(x) 返回x的反余弦值
    Math.asin(x) 返回x的反正弦值
    Math.atan(x) 返回x的反正切值
    Math.atan2(y,x) 返回y/x的反正切值
    Math.cos(x) 返回x的余弦值
    Math.sin(x) 返回x的正弦值
    Math.tan(x) 返回x的正切值

    更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》

    希望本文所述对大家JavaScript程序设计有所帮助。

    您可能感兴趣的文章:

    • Javascript类库的顶层对象名用户体验分析
    • JS window对象的top、parent、opener含义介绍
    • js window对象属性和方法相关资料整理
    • javascript window对象属性整理
    • JavaScript中Window对象的属性及事件
    • JavaScript的document对象和window对象详解
    • Javascript Global对象
    • Nodejs学习笔记之Global Objects全局对象
    • JavaScript高级程序设计 读书笔记之十一 内置对象Global
    • ES6顶层对象、global对象实例分析

    广而告之:
    热门推荐:
    PHP实现桶排序算法

    简单意义上的桶排序: 桶排序的原理是先安排N+1个桶作为容器,若数据范围为N的话。 然后将测试数据(所需排序的数据)进行循环,放入对应的桶内。数据一定是在范围N内的。 最后,循环桶里的元素,并且输出,进行从大到小或从小到大的排序。 例如: 我们的取值范围是10,那么就要定义一···

    mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法

    需求:把一个表某个字段内容复制到另一张表的某个字段。 实现sql语句1:复制代码 代码如下:UPDATE file_manager_folder f1LEFT OUTER JOIN file_manager_folder f2     ON f1.name = f2.name AND f2.parentId = 54SET f1.parentId = 54 WHERE f2.name IS N···

    微信小程序实现弹出菜单动画

    微信小程序动画之弹出菜单,供大家参考,具体内容如下 效果图 js: Page({ data: { isPopping: false, animPlus: {}, animCollect: {}, animTranspond: {}, animInput: {}, animCloud:{}, aninWrite:{}, }, //点击弹出 plus: function () { if (this.dat···

    5分钟打造简易高效的webpack常用配置

    webpack给前端开发带来了毋庸置疑的改变,它把JS,图片,css都作为模块处理,同时具有开发便捷,自动化,兼容AMD写法等等诸多无须赘述的优点,更令人称道的是其插件社区非常强大,对于不同的业务需求和技术需求社区都有大量插件可供使用。 凡事都具有两面性,许多人说:前端开···

    ThinkPHP空模块和空操作详解

    ThinkPHP的空模块和空操作也是很有实用意义的功能,空模块的概念就是当ThinkPHP找不到指定模块的时候,它会尝试去定位空模块(EmptyAction),执行空模块里面的index操作。同理,空操作也是同样的概念,当系统找不到指定模块下的操作方法的时候,就会尝试去定位空操作方法(empty)···

    深入理解ES6学习笔记之块级作用域绑定

    众所周知,js中的var声明存在变量提升机制,因此ESMAScript 6引用了块级作用域来强化对变量生命周期的控制 let const 声明不会被提升,有几个需要注意的点 1、不能被重复声明 假设作用域中已经存在某个标识符(无论该标识符是通过var声明还是let、const变量声明),此时再使用···

    Vue中跨域及打包部署到nginx跨域设置方法

    众所周知,我们在做前后端分离项目的时候,经常需要在本地起前端工程,接口希望拉取服务端的实际数据而不是本地的mock数据,而如果本地程序直接访问远程接口, 肯定会遇到跨域问题。 什么是跨域?实现跨域的多种方式? 这里我就不详细介绍了,大家自行百度哈 为什么要实现前···

    如何使用wordpress钩子函数在发表文章的同时添加一条记录

    我要对文章进行排序,按照投票数的多少排,已经投票的都会记录投票数,而没有投票的文章没有记录,默认投票为0,这时排序就有问题了,它先把有记录的文章进行排序,因为投票可能是负数,排完了负数再排列没有投票记录的文章,这个时候就会出现没有投票的文章也就是投票数···

    xajax写的留言本

    <?  session_start();  require_once("../conn/mysqlconn.php");  require_once('xajax.inc.php');  if(!isset($_SESSION['wid']))  {  $_SESSION['wid']=$_GET["wid"];  }  if(isset($_POST['content_4']))  {  &···

    HTML实现移动端固定悬浮半透明搜索框

     Question. 问题 在移动端商城系统中,我们常常看到位于页面顶部有一个搜索框,这类搜索框博主比较喜欢的是固定在页面顶部,半透明悬浮,能依稀看见部分轮播图的形式。 要制作这样的搜索框,技术关键在于: fixed 搜索框定位 opacity 设置透明度 Solution. 解决 首先我···