var a = new Object();
- Object, 即构造函数, 是函数。
typeof Object == 'function' ;//true
- Object.prototype, 即Object的原型, 是对象。
typeof Object.prototype == 'object';//true
只有函数才有prototype属性,prototype != 原型
构造函数的prototype并不是构造函数的原型,只有Function.__proto__
才能代表原型(Function.__proto__
就是Function构造函数的原型),Function.prototype是用构造函数构造出来的实例对象的原型,
原型构成了原型链,原型链的根就是Object.prototype。根的原型为null
Object.prototype.__proto__;//null
proto
实现了ecma-262中的 [[Prototype]]
,这是一个内置属性,不可操作,每个实例对象内部都有,指向该对象的原型。
通常不建议使用 __proto__
。只有一个地方建议:使用class时,直接定义 __proto__
属性。
不过,用来理解原型还是不错的
原型获取和设置
可以使用Object.getPrototypeOf()
和Object.setPrototypeOf()
来获取和设置对象的原型。
网友评论