全局对象
- ES规定的Global
- 浏览器里默认的是window,在控制台里输入window即可看到所有属性
window的属性又分为两类:
- ES规定的
- parseInt()
- parseFloat()
- Number()
- String()
- 浏览器私有(winodw可省略)
-
alert() ---- window.alert("hi")
弹出对话框提示"hi" -
prompt() ---- var a = window.prompt('请输入**')
输入的信息保存到a中 -
confirm() ---- var b = window.confirm('确认吗')
b得到的值为true或false -
console.log() ---- window.console.log('a')
在控制台打印出'a'
简单类型与对象的区别.
- 简单类型 m = Number('1')
直接在stack里储存了数字1,是没有方法可以使用的,但是却可以直接使用方法,原因在于使用方法时,js内部会创建一个临时变量,比如:m.toSting() temp = new Number('1') temp.toSting()于是下面这种方法用的人就少了.
- 对象 n = new Number('1')
将n的地址存入stack,该地址指向一个heap内存区域,以键值对的方式存储了数字1.对应有很多方法可以使用.
Number()
其他类型也是如此.
原型
var a = new Number()
var b = new String()
var c = new Boolean()
var d = new Object()
以上这些对象都有toString() valueof()等方法,把这些方法放在一起.每个对象都有一个__proto__(指向共有的属性的集合),通过__proto__访问该集合来使用其中的函数.原型链就是从对象通过__proto__一级一级指向Object.prototype的形象叫法.
var 对象 = new 函数()
对象.__proto__ === 函数.prototype //true
函数.prototype.__proto__ === Obeject.prototype //true
函数.__proto__ === Function.prototype //true
Function.prototype === Object.prototype //true
var a = new Number()
a.__proto__ === Number.prototype //true
var b = new String()
b.__proto__.__proto__ === Object.prototype //true
Function.__proto__ === Function.prototype //true
//左侧对象是由函数构成的,所以它的__proto__ === 构造函数.prototype