
由以上代码可知
在正常的情况下,即
var stu = new Student();
通过Student构造函数,创建了一个Studet实例对象stu
那么 stu 的非标准原型对象__proto__根据原型链指向stu的构造函数 Student的标准原型对象prototype,而sayHi() 方法是添加到原型中的的方法,自然stu局可以调用 sayHi() 方法
但是
通过 Student.prototype = new Person() 把Student 构造方法 的标准原型对象 指向了Person的实列对像,进而,Student 的 标准原型对象 prototype 就会指向 Person的实例对象的非标准原型对象 __proto__
通过开始的原型链分析,Person 的非标准原型对象 __proto__ 必然指向 Person 的标准原型对象 prototype,而,Person 的 eat() 方法是通过Person 的标准原型对象 prototype来添加的
那么
Student 的实列对象 stu 就必然能调用 Person 的方法,eat()
667

被折叠的 条评论
为什么被折叠?



