原型对象
prototype
构造函数的一个属性
原型链是基于__proto__
形成的,并不是函数的prototype
属性
(IE把__proto__
封装起来了,不能通过这个获取Object原型对象)
通过构造函数的prototype找到原型对象,原型对象的属性会继承给构造函数构造出的对象(原型继承)
function create(){
this.name = '名字'
}
console.log(create.prototype) //原型对象
通过该构造函数new了一个A,通过A.__proto__
也能找到原型对象
let A = new create()
console.log(A.__proto__) //原型对象
并且create.prototype=== A.__proto__
如果把一个实例化对象赋值给create.prototype
function factory(){
this.speed = 13
}
create.prototype = new factory() //create.prototype指向的地址发送了改变
console.log(create.prototype) // factory {speed: 13}
这时候我们通过create实例化一个对象B let B = new create()
那么B也会继承speed属性
let B = new create()
console.log(B.speed) // 13
原型对象上的所有属性和方法,都会被对象实例所共享。
一般情况,都通过改变prototype来改变原型对象的属性或者方法