0

私がecmascript 5クラスを持っていると仮定します

function vehicle(){
    this.hasWheels=true;
} 

vehicle.prototype.getWheels=function(){return this.haswheels;};

しかし、それは新しい ecmascript クラス構文を使用して定義されました。車両がプロトタイプとしてextends使用する「車」クラスを作成しvehicle.prototypeますか、それとも車両の新しいインスタンスを使用しますか?

4

1 に答える 1

0

vehicle を拡張する「car」クラスを作成すると、 vehicle.prototype がプロトタイプとして使用されるか、または vehicle の新しいインスタンスが使用されますか?

ない。を単純に拡張しvehicle.prototypeたり、インスタンス ( new vehicle) を作成したりしません。

代わりに、車両プロトタイプから継承する新しいオブジェクトを適切に作成します。

Car.prototype = Object.create(Vehicle.prototype);

ただし、実際にはそれ以上のことを行います。最大最小クラスの提案では、はプロトタイプ演算子( archived )extendsに関して定義されています。<|

class Car extends Vehicle { constructor(){} }

と同等です

const Car = Vehicle <| function Car(){};

ES5では次のようになります

function Car(){}
Car.__proto__ = Vehicle; // not so much ES5
Car.prototype = Object.create(Vehicle.prototype);
于 2014-04-27T17:17:42.647 に答える