functionPerson(name){this.name=name;}varp1=newPerson("张三");Person.prototype.greeting=function(){return"你好,我叫"+this.name;};p1.name;//张三p1.greeting();//你好,我叫张三p1.constructor===Person;//true/*sofarsogood,but...*/Person.prototype={say:function(){return"你好,我叫"+this.name;}};p1.say();//TypeError:Object#hasnomethod'say'p1.constructor.prototype;//Object{say:function}Person的原型属性里明明有say方法,为什么访问不到,求解释,谢谢!
2 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
functionPerson(){...}Person.prototype.greeting=function(){...};varp1=newPerson();p1.__proto__===Person.prototype;//truePerson.prototype={say:function(){...}};//这是一个新创建的对象p1.__proto__===Person.prototype;//false解释:Person的prototype被新创建的{say:function(){...}}覆盖后,p1引用的原型对象仍然指向Person之前旧的那个prototype对象。所以调用p1.say();在原型链找不到这个方法
添加回答
举报
0/150
提交
取消
