js里面的对象

2018-10-07  本文已影响0人  索伯列夫

全局对象window
全局函数
公共的属性藏在哪
toSting哪来的-原型链

全局对象window

ECMAScript 规定全局对象叫做 global,但是浏览器把 window 作为全局对象(浏览器先存在的)

window 就是一个哈希表,有很多属性。

window 的属性就是全局变量。

这些全局变量分为两种:

一种是 ECMAScript 规定的

global.parseInt
global.parseFloat
global.Number
global.String
global.Boolean
global.Object
一种是浏览器自己加的属性

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

ECMAScript规定的对象:

以number()为例
方法一:var n1 = 1
方法二:var n2 = new Number(1)

区别就是内存不同,看内存图:

区别
那么在这里,很明显方法二过于复杂,没人喜欢用(是js发明时候的问题),但是方法一有一个明显的缺点就是,我们无法用n1.toString(),但是事实是我们可以这么用。其实在这其中发生了一步临时转换,我们用n.toString(),实际上创建一个临时变量:temp = new Number(n),我们只需要用temo.toString()就可以~

例:

var n = 1
n.xxx = 2 //不会报错
n.xxx //undefined

分析如下:


分析

实际上,当第二步结束的时候,temp已经被清除掉了~所以~n.xxx啥也没有。

总结:普通对象可以使用x.toString(),实际上是创建了临时变量。

String()

boolean同理

公共属性(原型)

proto与prototype的区别:初始化.png
prototype是浏览器准备的,proto是自己创建后出现的
见下一篇博客~

上一篇下一篇

猜你喜欢

热点阅读