JavaScript内置对象(22)

JavaScript内置对象

  • 全局对象window
  • 全局函数
  • 公共属性隐藏在哪里
  • toString从哪里来(原型链)

全局对象window

全局对象(global,浏览器中也叫做window)
atob() //将base64位编码转换为字符串
btoa() //将字符串转换为base64位编码
例如:global.parseIntglobal.parseFloat

window中有公共的属性也有私有的属性。
公共的属性是要求所有的浏览器都必须有。 私有的属性。私有的属性为浏览器专有,可以为firefox所有,可以为chrome所有也可以为firfox和chrome共有。 私有属性具体展示:

window.setTimeout(function(){alert("3秒种后显示")},3000) //公共对象   三秒种后显示一个弹出框
复制代码

简单类型和对象的区别

Number()的两种表达方法:
(1)Number('1')
(2)var n= new Number(1)
var n1 =1var n2 = new Number(1)的区别
n2里面的值可以通过valeOf()属性调用 new的出现是JS之初,JS之父为了响应老板的需求是JS更像Java而特地制作出来的 之后var n1=1引入了临时变量,使得var n=1 也可以使用toString(),valueOf(),这个变量使用完成就会被立即消失

思考题:

var n = 1;
n.xxx = 2; 
n.xxx=?
复制代码

(1)首先定义一个简单变量n-1
(2)然后n.xxx赋予一个临时的哈希数组,使得n.xxx=2,其中可以公用valueOf(),toString()属性.这一句执行完则自动消除
(3)n.xxx还是一个简单的变量,所以n.xxx的结果为undefined
内存图详解:

String()的两种表达方法:
(1)String('1')
(2)var n= new String(1)
其中toString有很多API:
(1)除去前后字符串的空格
' yseser '
' yseser '.trim() //'yseser'
(2)连接字符串
var s1='hello' var s2= 'world'
s1.concat(s2) //'helloworld'
(3)slice()切片
s1.slice(0,2) //he 表示从第一个开始,共计两片
s1.slice(0,3) //hel 表示从第一个开始,共计三片
s1.slice(0,4) //hell 表示从第一个开始,共计四片
(4)replace替换
s1.replace('e','o') //'hollo 将S1字符串的e更换成o'
boolean()表达方法类似, 也有toString(),也有valueOf() Object()表达方法
(1) var o1 = {}
(2) var o2 = new Object()
虽然Object有两种表达方法,但是这两种表达方法不相同。 简单的介绍了一下各种数据类型,而他们的表达方法如内存图所示: 各种数据类型的共同点就是他们都有 toString(),valueOf()接口,内存资源也稀缺重要不会允许他们这样浪费,于是这是就要使用共同资源,将所有的 toString()``valueOf()存到一个公用资源中,需要使用时只需要给一个地址指向它就可以使用。也就是我们下面要提到的原型链。 通过一个隐藏的属性 __proto__指向共同的属性: 不同类型的表达方法区别: JS内存结构图:

通过上面我可以知道: Object对象是所有对象的共有属性。任意一条类型的线路从开始到最后就叫做原型链

所以:
s1.__proto__ === String.prototype
s1.__proto__ === Object.prototype
n1.__proto__ === Number.prototype
n1.__proto__ === Object.prototype
b1.__proto__ === Boolean.prototype
b1.__proto__ === Object.prototype

而结合着了解在无代码的情况下怎么实现: 浏览器中(window)中的prototype永远存在,否则就会被垃圾回收!!!

最后我们详解一下烧脑的__proto__与prototype的区别

(1)表示对象的属性 (2)表示函数的属性  (1)(2)都表示同一个类型的属性 而在上述考虑的属性中Function是比较特殊的一种

你可能感兴趣的:(JavaScript内置对象(22))