JavaScript使用prototype继承构造函数会改变的问题

使用原型继承为什么会改变子类的构造函数呢?

看代码:

var A = function (){    console.log('A');
};var B = function (){    console.log('B');
};var C = function (){    console.log('C');
};

B.prototype= new A();var b = new B();var c = new C();console.log(b.constructor.toString());   //奇怪啊console.log(c.constructor.toString());

第一个console输出结果竟然是:

function (){

console.log('A');

}

不是很理解为什么会是这个结果,求大神解答


慕的地10843
浏览 593回答 1
1回答

慕婉清6462132

B.prototype= new A();是赋值操作,所以 A.prototype.contructor 就赋值给了B.prototype在new B();实例化的过程中其实是将B.prototype克隆出来 再让B构造函数处理后返回因此需要重新指定B.prototype= new A();B.prototype.contructor = B;另外,继承我个人建议用Object.create实现B.prototype = Object.create(A.prototype);B.prototype.contructor = B; //这样继承就不用去实例化一次A
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript