打印结果如下:
每个实例原型最终都会指向Object原型,其根本是利用Object来创建实例
每次进行实例化new 一个对象时其实都是 new 一个 Object 对象,通过Object()构造器
获取Object原型来构建
如图所演示,var person = new Person()时 Person函数(类)会将Person.prototype
中存在的原型属性获取并传给person实例中的_proto_属性,而Person.prototype中 _proto_属
性里也有从上一个原型对象中继承下来的原型属性,这里的Person.prototype是通过Object()构
造函数将Object.prototype中的方法继承了下来(例如我们所属性的toString方法,其实是
Oject.prototye中定义的方法。)
实验验证:原型链传递属性或者方法
增加代码:
Person.prototype.run = function(){
console.log(‘run‘)
}
打印结果如下:
由此得出结论:通过原型链定义的方法,被传递至实例person的_proto_中
而想要调用run方法 => person.run() 这样即可,实际调用的是_proto_中的run方法
这与通过构造函数定义的方法不太一样呢?
下面是通过构造函数定义出来的voice方法
原文:https://www.cnblogs.com/chujunqiao/p/11631904.html