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()为例
- number('1')
- var a = new Number(1)
例:
方法一: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()
- var a = 'huahua'
- var b = new String('huahua')
boolean同理
公共属性(原型)
proto与prototype的区别:初始化.png
prototype是浏览器准备的,proto是自己创建后出现的
见下一篇博客~