前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >红宝书 📒 5.4 基本引用类型-单例内置对象

红宝书 📒 5.4 基本引用类型-单例内置对象

作者头像
用户4793865
发布2023-01-12 13:38:15
4000
发布2023-01-12 13:38:15
举报
文章被收录于专栏:前端小菜鸡yym前端小菜鸡yym

🤔 1.什么是内置对象

任何由ECMAScript提供、与宿主环境无关,并在ECMAScript执行时就存在的对象。我们前面提到的String、Object、Array、Number、Boolean这些都是内置对象。

执行时就存在,也就是说,我们不需要显示的实例化内置对象,因为已经实例化好了。 比如定义一个字符串类型时:

代码语言:javascript
复制
let str = "aaa"
str.substring(2)

在执行let str = "aaa"后实际上js后台是实例化一个对象了的let str = new String("aaa") 所以才可以使用 .substring()

这节课介绍另外两个单例内置对象:Global 和 Math。我也一直在纠结"单例"是什么意思。但是看了很多书上也没有过多的解释。就记住这两个是单例内置对象就好了。

Global

或许不了解Global,但是我们一定知道window。不要急慢慢看

兜底对象

代码不会显式的访问它。其作为对象的一种兜底对象,其针对的是不属于任何对象的属性和方法。

不存在全局变量

事实上,不存在全局变量或全局函数。在全局作用域中定义的变量和函数都会成为Global对象的属性。如:isNaN() isFinite() parseInt() parseFloat()等。

URL编码方法

首先知道一下URL 和 URI

URI

统一资源标识符,关键字是标识,比如:某知名吴姓男明星涉嫌强奸罪。我们知道了有这么个男星,姓吴,犯的是强奸罪。

代码语言:javascript
复制
Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的;

URI一般由三部组成
①访问资源的命名机制
②存放资源的主机名 
③资源自身的名称,由路径表示,着重强调于资源。

URL

统一资源定位符,关键字是定位,比如:某知名男星、归国四子之一、加拿大华人,任《中国有嘻哈》导师的吴某凡涉嫌强奸女粉丝,被朝阳分局依法逮捕。这就定位到了这个人。URL是URI的子集,好比URI是牙签,URL代表加拿大的牙签。

代码语言:javascript
复制
URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。

URL一般由三部组成
①协议(或称为服务方式) 
②存有该资源的主机IP地址(有时也包括端口号) 
③主机资源的具体地址。如目录和文件名等

言归正传。 这里我们需要了解四个方法

代码语言:javascript
复制
let uri = "http://www.wrox.com/illegal value.js#start"
// 编码
// encodeURI只是将空格替换为%20
// encodeURIComponent将所有非字母字符都替换成了相应的编码
encodeURI(uri)  // 'http://www.wrox.com/illegal%20value.js#start'
encodeURIComponent(uri) //'http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.js%23start'

// 解码
// 'http%3A%2F%2Fwww.wrox.com%2Fillegal value.js%23start'  
// 20%会被替换为空格 但是 23%不会被替换为# 
decodeURI('http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.js%23start')
// 'http://www.wrox.com/illegal value.js#start'
decodeURIComponent('http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.js%23start')

escape()和unescape()被以上方法取代,并且已经废弃了。

eval()

eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。

如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。

比如我们在控制台执行以下代码,就会将结果在我们的页面上显示。

代码语言:javascript
复制
eval("document.write('2+2')")
image.png
image.png

在eval执行的代码会被添加到上下文中。所以在eval中可以使用外部的变量。同样外部也可以eval使用内部的一切

代码语言:javascript
复制
let msg = "hello"
eval("console.log(msg)")

eval("function say(){console.log('hello')}")
say()

global对象属性

image.png
image.png
image.png
image.png

window对象

虽然ECMA没有规定访问Global的方式。但是浏览器将window对象实现为Global对象的代理。 所有全局作用域中声明的变量和函数都成了window的属性。

代码语言:javascript
复制
var color ="red"
function sayColor(){
    console.log(window.color)
}
window.sayColor()  // "red"

立即调用函数获得global 这种在函数后加上()的形式就是立即调用函数

代码语言:javascript
复制
let global = function(){
    return this
}()

在一个函数没有指明this值的情况下,this值等于Global对象。

Math

看到单词就知道,是提供一些数学处理的对象。在Math上提供的计算,要比直接在JavaScript上计算要快。

对象属性

可在需要时使用

代码语言:javascript
复制
Math.E   // 自然对数的基数e的值  2.718281828459045
Math.LN10  //10为底的自然对数 2.302585092994046
Math.LN2    // 2为底的自然对数 0.6931471805599453
Math.LOG2E  // 以2为底e的对数
Math.LOG10E  // 以10为底e的对数
Math.PI      // π
Math.SQRT1_2  // 1/2的平方根
Math.SQRT2    // 2的平方根

min() max()

可传入多个参数

代码语言:javascript
复制
max = Math.max(3,54,17,9)   // 54
min = Math.min(8,9,0)      // 0

要想知道数组中的最大值/最小值可以使用扩展操作符。

代码语言:javascript
复制
let a = [1,9,6,19,89,3]
Math.max(...a)

舍入方法

代码语言:javascript
复制
// 向上取整
Math.ceil(23.4)   // 24
// 向下取整
Math.floor(23.8)  // 23
// 四舍五入
Math.round(23.4)   // 23
Math.round(23.5)   // 24
// 数值最接近的单精度浮点值 个人觉得没什么用
Math.fround(23.5)  // 23.5
Math.fround(23.9)  // 23.899999618530273

random

随机数,返回0~1范围内的随机数[0,1)包含0但是不包含1

取到1~10随机数

可以使用向上取整/向下取整

代码语言:javascript
复制
Math.ceil(Math.random()*10)
Math.floor(Math.random()*10+1) // 0.1向下取整是0,9.9向下取整是9 所以需要加一

其他方法

一些常用的

代码语言:javascript
复制
Math.abs(x)  // 返回x的绝对值
Math.log(x)  //  返回x的自然对数
Math.pow(x,power)  // x的power次幂
Math.sqrt(x)   // 返回x的平方根
Math.cbrt(x)   // 返回x的立方根
Math.acos(x)   // 返回反余弦
Math.cos(x)    // 返回余弦 
Math.sin(x)    // 返回正弦
Math.tan(x)    // 返回正切
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Global
    • URL编码方法
      • eval()
        • global对象属性
          • window对象
          • Math
            • 对象属性
              • min() max()
                • 舍入方法
                  • random
                    • 其他方法
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档