js学习笔记:引用类型——单体内置对象

单体内置对象:由ECMAscript实现提供的,不依赖于宿主环境的对象,这些对象在ECMAScript程序执行之前就已经存在了。

Global对象

Global对象在某种意义上是一个终极的兜底对象,不属于其他任何对象的属性和方法,最终都是它的属性和方法。实际上,没有全局变量或全局函数,所有在全局作用域中定义的属性和函数,都是Global对象的属性。如isNaN,isFinite等。

URI编码方法

  • Global对象的encodeURI()和encodeURIComponent()方法可以对URI进行编码,以便发送给浏览器。
  • 有效的URI中不能包含某些字符,如空格。因此这两个URI方法就可以对URI进行编码,用特殊的UTF-8编码替换所有无效的字符,从而让浏览器可以接受和理解。

  • encodeURI主要用于整个URI,且不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号

因此一般对整个URI使用encodeURI,却只能对附加在现有URI后面的字符串使用encodeURIComponent。

  • 与上两个方法对应的分别是decodeURI和decodeURIComponent。
  • decodeURI 只能对encodeURI替换的字符进行解码,例如它能将%20替换成一个空格,却不会对%23做任何处理,因为%23表示井字号,而井字号不是使用encodeURI替换的。
  • 同样,decodeURIComponent能够解码用encodeURIComponent编码的所有字符

eval()

只接受一个参数,即要执行的ECMAScript的字符串。

eval("alert('hi')");
  • 当解析器发现代码中调用eval方法时,他会将传入的参数当做实际的ECMAScript语句来解析,然后把执行结果插入到原位置。
  • 通过eval执行的代码被认为是包含该次调用的执行环境的一部分,因此被执行的代码就具有与该执行环境相同的作用域链。这意味着通过eval执行的代码可以引用在包含环境中定义的变量。
var msg = "hello world";
eval("alert(msg)"); 

也可以在eval中定义一个函数,然后再在该调用的外部代码中引用这个函数。

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

但是在eval中创建的任何变量或函数都不会被提升,因为在解析代码的时候他们被包含在一个字符串中。它们只在eval执行的时候创建。

严格模式下,在外部访问不到eval中创建的任何变量或函数,因此前面的例子会报错。在严格模式下,为eval赋值也会导致错误。

Math对象

min() max()

  • 用于确定一组数值中的最小值和最大值。
  • 可以接受任意多个数值参数。
var max = Math.max(3,54,32,16);//54
var min = Math.min(3,54,32,16);//3

这个方法经常用于避免多余的循环。

要找到数组中的最大或最小值,可以像下面这样使用apply方法:

var values = [1,2,3,4,5,6,7,8];
var max = Math.max.apply(Math,values);

关键是把Math对象作为apply的第一个参数,从而正确地设置this值。

而在ES6中,可以使用扩展运算符:

var values = [1,2,3,4,5,6,7,8];
var max = Math.max(...values);

扩展运算符会自动将values扩展为一个一个的参数传入到max方法中,这样就不用使用令人混淆的apply方法了。

舍入方法

  • Math.ceil():执行向上舍入,总是将数值向上舍入为最接近的整数。
  • Math.floor():执行向下舍入,总是将数值向下舍入为最近的整数。
  • Math.round():执行标准舍入,总是将数值四舍五入为最接近的整数。
Math.ceil(25.9); //26
Math.ceil(25.5); //26
Math.ceil(25.1); //26

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

Math.floor(25.9); //25
Math.floor(25.5); //25
Math.floor(25.1); //25

random()

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

如要选择一个1到10之间的整数:

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

如要选择一个2到10之间的整数:

var num = Math.floor(Math.random()*9 +2);

其实可以通过一个函数来计算可能值的总数和第一个可能的值:

function selectFrom(lowerValue,upperValue){
    var choices = upperValue-lowerValue+1;
    return Math.floor(Math.random()*choices + lowerValue);
}

var num = selectFrom(2,10); 

利用这个函数可以方便地从数组中随机取出一项:

var colors = ["red","green","blue","yellow","black"];
var color = colors[selectFrom(0,colors.length-1)]; //随机取出一个函数

其他

还有许多涉及各种计算的方法,不展开了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值