什么是对象?
对象(object)是 一种最重要的数据类型。它是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
比如下面的例子:
var obj = {
foo: 'Hello',
bar: 'World'
};
上面代码中,大括号就定义了一个对象,它被赋值给变量obj,所以变量obj就指向一个对象。该对象内部由键名和键值组成,在这个例子中,键名为foo和bar,相对应的键值为Hello和world。需要注意的是,键名默认是为字符串的。
全局变量
一种是 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
原型链
JavaScript 中的对象的每个实例对象(object )都有一个私有属性(称之为proto)指向它的原型对象(prototype)。这个原型对象也有一个自己的原型对象(proto) ,层层向上直到一个对象的原型对象为 null
。根据定义,null
没有原型,并作为这个原型链中的最后一个环节。
关于原型链,需要理解下面三句话:
function People(){}
var p = new People()
p.__proto__ === People.prototype
People.__proto__ === Function.prototype
People.prototype.__proto__ === Object.prototype
**当 new 一个函数的时候会创建一个对象,『函数.prototype』 等于 『被创建对象.proto』
一切函数都是由 Function 这个函数创建的,所以『Function.prototype === 被创建的函数.proto』
一切函数的原型对象都是由 Object 这个函数创建的,所以『Object.prototype === 一切函数.prototype.proto』**
知乎上有一个非常好的实例可以用来深入理解:
[原型链]https://zhuanlan.zhihu.com/p/22473059
如果再高度概括一下,其实就是“函数爸爸(People(){})构造了对象儿子(p),那么儿子的.proto自然指向爸爸的.prototype;所有函数都是Function函数(姥爷)构造的;Function函数的原型对象都是Object (太爷爷)这个函数构造的”。
var 对象 = new 函数()
对象.proto === 构造这个对象的函数.prototype
网友评论