为了账号安全,请及时绑定邮箱和手机立即绑定

javascript 原型问题

javascript 原型问题

萧十郎 2019-04-13 08:46:17
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;//true
Person.prototype={say:function(){...}};//这是一个新创建的对象
p1.__proto__===Person.prototype;//false
解释:
Person的prototype被新创建的{say:function(){...}}覆盖后,
p1引用的原型对象仍然指向Person之前旧的那个prototype对象。
所以调用p1.say();在原型链找不到这个方法
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 501 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号