如下 求解释 js prototype

meluo
  • 216
function employee(name,job,born)
{
this.name=name;
this.job=job;
this.born=born;
this.salary=12;
}
let c=123;
var bill=new employee('xx','ss','pp');
employee.prototype.salary=function(){
    return this.born;
}
alert((bill.salary+'--000---'+employee.prototype.salary()));

var alise=new employee('xx','ss','pp');
alert((alise.salary+'--000---'+alise.salary()));
回复
阅读 1.1k
2 个回答
陌路凡歌
  • 7.8k

第一个是12--000---undefined,employee.prototype.salary(),this.born没赋值,return undefined;
第二个alise.salary()出错,alise.salary是this.salary,为12,employee中有this.salary=12,把employee.prototype.salary覆盖,找的是this.salary(),报错

spencerht
  • 7.8k

原型链调用其实就是这里去读取alise.salary时候。先去读取alise自身上的salary属性(12),如果有,则返回,如果没有,就去其prototype上面去找,找到了那个function。
其实我们用过原型链调用,比如字符串各种操作,数组的增删查改等等,其实都是从你的实例上去调用string对象或是array对象上的方法。如果在实例上增加同名的函数或是属性,会优先调用。
总得来说,原型链像是一条绳子;实例和其原型和其原型的原型等等,像是绳子上的按继承关系排好的蚂蚱;要找什么属性就从实例开始沿着绳子向后找。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏