prototype(显示原型)
prototype就是对象与对象的原型关联属性,对象创建的时候关联另一个对象
函数有原型属性,函数的值叫做原型对象
原型对象的两个属性
constructor 指向函数本身
_proto_ 指向Object.prototype
var obj = new Object ()
// obj._proto_ === Object.prototype 新建对象实例通过原型链的方式继承关联函数的原型对象的属性和值
__proto__ (隐式原型)
_proto_ 指向关联对象的原型
var obj = new Object () // obj._proto_ === Object.prototype
原型链
原型的实例赋值给另一个对象,另一个对象在赋值给其它对象,就会形成原型链
原型链是实现继承的主要方式,就是利用原型让一个引用类型继承另一个引用类型的属性和方法
function Super(name){
this.name = name
}
Super.prototype.name = 'zheng'
var oldObj = new Super ()
var newObj = oldObj
// oldObj._proto_ === newObj._proto_ === Super.prototype
constructor
每个原型都有constructor属性,指向关联的构造函数
function newObject(name){
this.name = name
}
newObject.prototype.name = "zheng"
var obj = new Object ()
// obj._proto_ === newObject.prototype
// newObject=== newObject.prototype.constructor
// Object.getPrototypeOf(obj) === newObject.prototype