组合继承的问题

来源:3-2 ES5中的类与继承

慕丝7210068

2020-06-07

这里组合继承没有听明白:

function Animal(name) {
   this.name = name
}
Animal.prototype.showName = function () {
   console.log('my name is :' + this.name);

}

function Dog(name){
   Animal.call(this,name)
}
Dog.prototype = Animal.prototype  // 这里与老师的new Animal的差异在哪里
Dog.prototype.constructor = Dog
const dog1 = new Dog('wangcai')
console.log(dog1);

这里与老师的new Animal的差异在哪里

写回答

3回答

谢成

2020-06-07

Dog.prototype = Animal.prototype

上面这个写法应该不是我讲的吧。。。

如果这样写的话,相当于Dog.prototype 和 Animal.prototype指向同一块内存空间,这样就意味着改变其中一个就会影响到另一个。

比如试试给Dog的prototype增加一个新的方法,结果Animal上也会有这个方法。正常情况下,子类增加的方法是不应该影响到父类的。


3
0

qq_慕无忌1594956

2021-10-15

Dog.prototype = Animal.prototype是将Animal的原型对象赋值给了Dog的原型对象,而不是继承来着Animal的原型对象。

0
0

慕村7130881

2020-07-09

老师,new一个对象的方法不太懂

0
1
qq_慕无忌1594956
首先你得知道在new一个对象的时候发生了什么。 1.创建了一个新的空对象 2.让新对象的__proto__指向构造函数的原型对象 3.调用构造函数,传入实参值,并自动替换构造函数中的this为new正在创建的新对象,构造函数中,通过强行赋值的方式为新对象添加规定的属性 4.返回新对象的地址给左边的变量
2021-10-15
共1条回复

JavaScript ES(6-11)全版本语法 前端都需要的基础课

前端无门槛学习,从ES6到ES11,一套课程掌握JS最新语法

1328 学习 · 296 问题

查看课程