Javascript 为什么在原型继承中使用临时框?
下面的函数是Derek Banas在youtube上的OO Javascript教程中使用的函数Javascript 为什么在原型继承中使用临时框?,javascript,inheritance,prototypal-inheritance,Javascript,Inheritance,Prototypal Inheritance,下面的函数是Derek Banas在youtube上的OO Javascript教程中使用的函数 function extend(Child, Parent){ var Temp = function(){}; Temp.prototype = Parent.prototype; Child.prototype = new Temp(); Child.prototype.constructor = Child; } 为什么我们必须使用Temp原型? 为什么我们不能这样做
function extend(Child, Parent){
var Temp = function(){};
Temp.prototype = Parent.prototype;
Child.prototype = new Temp();
Child.prototype.constructor = Child;
}
为什么我们必须使用Temp原型?
为什么我们不能这样做:
function extend(Child, Parent){
Child.prototype = new Parent();
Child.prototype.constructor = Child;
}
嗯。这两个函数的主要区别在于行
Temp.prototype = Parent.prototype;
和Child.prototype=new Parent()代码>
第一个extend
函数仅显示原型继承。子级
不会从父级
继承任何属性,而父级不在其“原型”中,正如您所看到的,您不会在任何地方调用父级的构造函数
我创造了一个小提琴来解释这一点
在第二个扩展函数中,当您调用父级的构造函数Child.prototype=new Parent()
时,父级的原型中的所有属性以及所有不在父级原型中的属性将被子级继承;i、 e所有这些都将进入孩子的原型
我也创建了一个小提琴来解释这一点。仍然有一些教程没有使用对象。创建?@Bergi我读了你链接的文章,解释了为什么第二个不好,但我不太理解这句话:“给继承属性和自己的属性赋予不同的状态不是不可取的吗?”–我读了@Bergi的文章,他链接解释了为什么第二个不好,但我不太理解这句话:“给继承属性和自己的属性赋予不同的状态不是不可取的吗?”在第二个选项的我的提琴中,你可能会看到你得到了所有的原型属性(称为继承属性),以及将汽车自身的特性转化为汽车的原型特性。在这里,你无法区分这两者。这就是该声明所关注的问题。。