了解JavaScript中的原型继承
我是JavaScript OOP的新手。你能解释下面的代码块之间的区别吗?我测试了两个块都有效。什么是最佳实践,为什么?
第一块:
function Car(name){ this.Name = name;}Car.prototype.Drive = function(){ console.log("My name is " + this.Name + " and I'm driving.");}SuperCar.prototype = new Car();SuperCar.prototype.constructor = SuperCar;function SuperCar(name){ Car.call(this, name);}SuperCar.prototype.Fly = function(){ console.log("My name is " + this.Name + " and I'm flying!");}var myCar = new Car("Car");myCar.Drive();var mySuperCar = new SuperCar("SuperCar");mySuperCar.Drive();mySuperCar.Fly();
第二块:
function Car(name){
this.Name = name;
this.Drive = function(){
console.log("My name is " + this.Name + " and I'm driving.");
}
}
SuperCar.prototype = new Car();
function SuperCar(name){
Car.call(this, name);
this.Fly = function(){
console.log("My name is " + this.Name + " and I'm flying!");
}
}
var myCar = new Car("Car");
myCar.Drive();
var mySuperCar = new SuperCar("SuperCar");
mySuperCar.Drive();
mySuperCar.Fly();
为什么笔者的增加Drive
和Fly
方法使用prototype
,并没有宣布他们的this.Drive
内部方法Car
类和this.Fly
在SuperCar
类?
为什么SuperCar.prototype.constructor
需要重新开始SuperCar
?设置constructor
时prototype
是否覆盖了属性?我评论了这一行并没有改变。
为什么要Car.call(this, name);
在SuperCar
构造函数中调用?Car
当我这样做时,属性和方法不会被“继承”
var myCar = new Car("Car");
狐的传说
求javascript原型和继承讲解的视频
DOM节点的继承层次和原型继承有关系么???
原型与继承【prototype继承为什么要修正constructor】
子对象通过原型链继承父对象问题
相关分类