全局对象 window
ECMAScript 规定全局对象叫做 global
,但浏览器里默认的全局对象是 window
,因为先有的浏览器。
window
是个哈希表,有很多属性。
window
的属性就是全局变量。
全局变量分为 ECMAScript 规定的和浏览器自己私有的。
- ECMAScript 规定的(
global.
):
parseInt
parseFloat
Number()
String()
Boolean()
Object()
- 浏览器私有的(
window.
):
alert
//弹框提示
prompt
//用户填写
comfirm
//确认
consloe
//开发者
setTimeout(函数,时间)
//定时器
document
//文档(DOM规范是由W3C制定的)
history
//浏览器历史记录
简单类型与对象
Number、String、Boolean
var n1 = 1
var n2 = new Number(1)
n1与n2的区别是内存不同。
n1是简单类型。
n2是对象,有很多 hash,可以便捷地操作这个1,比如可以用n2.toString
、n2.valueOf
等。
事实上,n1是简单类型,却也可以用n1.toString
等,这是因为此时会申明一个临时对象temp = new Number(1)
,然后返回temp.toString
的值,并删掉 temp。
String() 和 Boolean() 也同理。
String 的部分 API:
s2.charAt(n)
// 获取某个索引对应的字符
s2.charCodeAt(n)
// 获取某个索引对应的编码
s2.charCodeAt(n).toString(16)
// 获取某个索引对应的16进制编码
s2.trim()
//去掉字符串两边的空格
s1.concat(s2)
//连接两个字符串
s1.slice(m,n)
//切片,包含前面的,不包含后面的
s1.replace('e','o')
//把 e 替换成 o
Object()
var o1 = {}
var o2 = new Object()
o1 和 o2 没区别。
但是 o1 与 o2 并不相等,所有新申明的对象都不会相等,因为指向的内存地址不同。
公用属性(原型) 与原型链
所有的对象都有 toString 和 valueOf 属性,JS 把所有的 toString 和 valueOf 放在一个对象(原型)里,然后让每一个对象的隐藏的 __proto__
属性存储原型对象的地址。
所有 Object 的公用属性在 Object.prototype 中,
所有 Number 的公用属性在 Number.prototype 中,
Number.prototype 的公用属性在 Object.prototype 中。

在 JS 中,对象在调用一个方法(属性)时会首先在自身里寻找是否有该属性,若没有,则去原型链上去寻找,依次层层递进。

根据 var 对象 = new 函数()
对象由函数构造
可以得到
★
对象.__proto__ === 函数.prototype
函数.prototype.__proto__ === Object.prototype`
函数.__proto__ === Function.prototype
Function.__proto__ === Function.prototype
Function.prototype.__proto__ === Object.prototype
Object.prototype.__proto__ === null
网友评论