关于原型链的一个问题

来源:15-9 原型和原型链-原型链

慕仔1661316

2019-06-12

var A=function(){}
A.prototype.n=1
var b=new A()

A.prototype={
n:2,
m:3

}

var c=new A()
console.log(b.n,b.m,c.n,c.m)//1,undefined,2,3

b是Anew出来的,也就是b.proto == A.prototype; 现在A.prototype.m==3,为什么b却找不到m呢.b.n还是1,麻烦老师能解答一下吗

写回答

1回答

双越

2019-06-12

这种情况我没有遇到过,也强烈不推荐这么写代码。构造函数和原型必须先确定,然后再 new 实例,禁止中途再增加原型。

根据你描述的情况,只能解释为 new 实例的时候,是以当前的构造函数原型为准,后续改变了不会影响前者。

最后,实际项目开发中千万别别这么写。

0
1
慕仔1661316
恩恩,这不是我写的,是在网上看题目的时候看到的,看的有点晕
2019-06-12
共1条回复

BAT大牛带你横扫初级前端JavaScript面试(第二版)

BAT高级前端工程师亲授,结合真实面试题,提高面试成功几率

4268 学习 · 817 问题

查看课程