全局对象
- 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
全局函数
- Number
var n = new Number(1) 创建一个 Number 对象
1 与 new Number(1) 的区别是什么?
image
- String
var str = new String('hello') 创建一个 String 对象
'hello' 与 new String('hello') 的区别是什么?
- Boolean
var b = new Boolean(false) 创建一个 Boolean 对象
false 与 new Boolean(false) 的区别是什么?
image
if(b){
console.log(xxx)
}
会打印出xxx,因为b为一个对象,并不是是falsy值了
- Object
var o1 = {}
var o2 = new Object()
o1 和 o2 没区别,但是 o1 === o2 是 false ,因为存储在 Stack(栈内存) 中的地址不同
公用的属性(原型)
- 把 toString 和 valueOf 放在一个对象里(公用属性组成的对象),
然后让每一个对象的__proto__
存储这个「公用属性组成的对象」的地址。
公式
- var 对象=new 函数()
<font color="blue">对象.__proto__
===函数.prototype</font>
// 推论
var number = new Number()
number.__proto__ = Number.prototype
Number.__proto__ = Function.prototype // 因为 Number 是 Function 的实例
var object = new Object()
object.__proto__ = Object.prototype
Object.__proto__ = Function.prototype // 因为 Object 是 Function 的实例
var function = new Function()
function.__proto__ = Function.prototype
Function.__proto__ == Function.prototye // 因为 Function 是 Function 的实例!
网友评论