【前端】你不得不会的一道原型面试题

//prototype 面试题
Function.prototype.a ='a';
Object.prototype.b   ='b';
function Person() {};
var p =new Person();
p.a;  
p.b;
console 初始化并打印
先来说说Person()

本题中Person,为Function类型,通过继承可以得到a();
本题中Person 通过Person.prototype 访问到 constructor 和 __ proto__,接着找到我们定义的b()
显然,Person的构造器是一个函数,Person构造函数的原型为Object
因此通过访问 Person.prototype.__ proto__ 可以拿到b方法


Person.prototype
再来说说 p=new Person();

p为Person的一个实例,p的constructor为Person();
prototype中的内容与Person() 保持一致
但对于函数a,由于没有在函数Person()的原型中实例化,因此无法实现继承;
重写Person()的原型,可以得到函数a()


实现Person()继承a
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。