关于原型继承缺点的问题
function b(){ this.name=[1,2,3] } b.prototype.ha={xi:"xi"}; function fn(){}; fn.prototype=new b(); fn.prototype.constructor=fn; var j1=new fn(); j1.name.shift(); j1.ha.xi="wohao" console.log(j1.name); console.log(j1.ha.xi) var j2=new fn(); console.log(j2.name); console.log(j2.ha.xi); var j3=new b(); console.log(j3.name); console.log(j3.ha.xi);
我知道实例j1中修改父方法的引用类型属性、方法的话,会导致共有这些引用类型的实例的值也会发生变化,但是我直接实例父方法的实例j3为什么只有原型上的ha属性发生变化,而.name就没有改变为[2,3]呢?麻烦老师了
1
收起
正在回答
1回答
因为原型在实例化的时候都会指向同一个地址 , 但是函数本身的属性和方法每实例化一次 ,都指向的不同 . 所以在实例化b之后 , 由于原型地址都是一样的 ,上面j1.ha.xi="wohao"已经改变了原型上面的内容 ,所以console.log(j3.ha.xi);会发生改变 . 而name是b本身上面的属性 ,所以是不会改变的
祝学习愉快 ,望采纳
相似问题
登录后可查看更多问答,登录/注册
组件化思想开发电商网页 18版
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星