var a = function() {}
var b = new a()
普通对象的proto指向创建该实例的构造函数的原型对象 -->(b.proto === a.prototype)
任何构造函数的proto指向Function.prototype -->(a.proto === Function.prototype)
prototype:此属性只有构造函数才有,它指向的是当前构造函数的原型对象。
proto:此属性是任何对象在创建时都会有的一个属性,它指向了产生当前对象的构造函数的原型对象,由于并非标准规定属性,不要随便去更改这个属性的值,以免破坏原型链,但是可以借助这个属性来学习,所谓的原型链就是由proto连接而成的链。
constructor:此属性只有原型对象才有,它默认指回prototype属性所在的构造函数。
例
function Ofo() {}
function Bick() {
this.name = 'myBick'
}
var myBick = new Ofo()
Ofo.prototype = new Bick()
var youbick = new Bick()
console.log(myBick.name)
console.log(youbick.name)
// 打印:undefined
// myBick
修改
function Ofo() {}
function Bick() {
this.name = 'myBick'
}
var myBick = new Ofo()
myBick.__proto__ = new Bick()
var youbick = new Bick()
console.log(myBick.name)
console.log(youbick.name)