js里的原型继承问题

码上有春天 发布于 2015/08/10 16:52
阅读 148
收藏 0

function A(x){
    this.x=x;
}

A.prototype.getx=function(){
return this.x;
}

function B(x,y){
    this.y=y;
    A.call(this,x);
}

B.prototype=new A();/*疑问*/
var b=new B(1,2);
alert(b.getx());

上面的代码是js中实现继承的一种常用方式,问题是我标成红底的那一行为什么不可以写成

B.prototype=A.prototype;

这样写也能让B的实例继承A原型中的属性吧,两种写法区别在哪呢?球指教,先谢了



加载中
1
明非_
明非_

var a = {
    user: 'username',
    password: 'password'
}

如果 使用 

var b = a;

这不是对象的赋值,而是引用,也就是说,当a再次改变的时候,b也会改变。

所以说 

a.prototype = b.prototype;



这句话是a.prototype 引用 b.prototype,所以当b的原型方法改变时也会影响a的原型方法




明非_
明非_
回复 @码上有春天 : 不谢,采纳就行
码上有春天
码上有春天
解释的很详细我懂了,感谢哈
1
双_双
双_双

B.prototype=A.prototype;

这样写虽然也能实现继承,但是B的原型改变后会影响到A,不合适。

码上有春天
码上有春天
还真是的,好厉害,多谢
0
C
Chenxif
对象是引用类型
返回顶部
顶部