JavaScript的对象

全局对象 window

ECMAScript 规定全局对象叫做 global,但是浏览器把 window 作为全局对象(浏览器先存在的)
window 就是一个哈希表,有很多属性。
window 的属性就是全局变量。

1(global):一种是ECMAScript标准规定的全局对象

  • global.parseInt
  • global.parseFloat
  • global.Number
  • global.String
  • global.Boolean
  • global.Object

2.(window):一种是浏览器自己的全局对象

  • window.alert
  • window.prompt
  • window.comfirm
  • window.console.log
  • window.console.dir
  • window.document
  • window.document.createElement
  • window.document.getElementById

每次浏览器打开的时候,就会生成一个全局对象。那么为什么要有全局对象呢?因为这样我们可以调用一些方法,所以要有一些内置的对象或方法。

下图为js所占的内存
image.png

全局函数

1.Number

  • Number(1)
  • var n=new Number(1)
    问题:var n1=1和var n2 = new Number(1) 的区别是什么?看内存图
    一个是基本类型,一个是对象,一般我们都用前者,后者没人用。
    image.png

问题:为什么有两种方式呢?

js之父Brendan Eich被公司要求写一门浏览器语言,但这言语要和Java差不多,所以他模仿Java写了var n=new Number(1);这样n就是一个对象,有自己的属性,但这样太麻烦,于是他又写了一种,var n=1;n是基本类型,但他用了一个方法,使得这样声明也可以使用Number对象的属性

var n=1;
n.toString();   //n使用toString时,本质是下面两行,实际上n没有属性的

var temp=new Number(n)  //先生成一个临时变量temp,并将n作为Number对象赋给temp
temp.toString()   //用temp来执行toString,执行之后temp就被抹杀了

image.png

当执行n.toString(),我们假设会先在Heap中生成一个对象temp,然后temp调用方法,得到字符串1,于是字符串1作为n.toString的结果,最后将临时对象抹杀
问题:下面第二行代码报错吗?

var a=1;
a.xxx=2; //  不报错
a.xxx   // undefined  

a.xxx为undefined,因为xxx方法是存在于temp中的,上一句temp执行完就被抹杀了,所以xxx也会被抹杀,所以执行第三局n.xxx的时候,又创建了一个临时对象地址为10,这时这个临时对象的xxx方法就没有值,所以为undefined


image.png

总结:基本类型n可以调用toString,...等方法是因为生成临时对象temp,temp调用方法后的返回值再传给n.toString

2.String

var s = new String('hello') 创建一个 String 对象
'hello' 与 new String('hello') 的区别是什么?看内存图

3.Boolean

var b = new Boolean(true) 创建一个 Boolean 对象
true 与 new Boolean(true) 的区别是什么?看内存图

4.Object

var o1 = {}
var o2 = new Object()
o1 和 o2 没区别

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 之前在《JavaScript的数据类型》这篇文章里说过,Object对于JavaScript的语言结构来说意义不一...
    查查查查查查克阅读 6,521评论 7 18
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,731评论 0 13
  • 全局对象 windowECMAScript 规定全局对象叫做 global,但是浏览器把 window 作为全局对...
    半斋阅读 3,405评论 0 0
  • 2017.9.8 晴 这个世界,还是实力最可靠,你要做什么,靠自己最好,其实每个人啊,自始至终都是孤独的,从小...
    风汐白阅读 1,616评论 0 0
  • 我在挣扎犹豫,该不该说我很想你,应不应该低头?是不是忘了分开的缘由?一而再再而三发生的争吵,因为同一个原因,没有解...
    浩瀚星空与恣洋大海阅读 1,481评论 0 0

友情链接更多精彩内容