ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript ウーバーとは何ですか

JavaScript ウーバーとは何ですか

藏色散人
藏色散人オリジナル
2021-11-01 15:31:481539ブラウズ

javascript uber は、メソッドに親クラスを呼び出すために初期の JavaScript で使用されていたメソッドで、Java のスーパー メソッドに似ています。

JavaScript ウーバーとは何ですか

この記事の動作環境: Windows 7 システム、JavaScript バージョン 1.8.5、DELL G3 コンピューター。

javascriptuber とは何ですか?

初期の JavaScript では、uber メソッドは Java のスーパーに似ており、メソッドが親クラスのメソッドを呼び出すことができます。ダグラス・クロックフォードは、予約語との衝突を避けるために、スーパーに似た意味のドイツ語「über」を使用しました。

ただし、Crockford氏は、古典的なデザインパターンではスーパーという考え方は非常に重要だが、JavaScriptのプロトタイプや関数のデザインパターンでは不要であると思われるとも述べています。 JavaScript における古典的な継承 古典的なオブジェクト指向言語は通常、親クラス (スーパークラス) にアクセスするための特別な構文を備えているため、サブクラスのメソッドは親クラスのメソッド、およびサブクラスと親のメソッドを使用できます。クラスは同じ名前です。最新の JavaScript にはそのような特別な構文はなく、Uber でもこの関数を実装できますが、より面倒です。次の例を見てください。

// inheritance helper
function extend(Child, Parent) {
  var F = function () {};
  F.prototype = Parent.prototype;
  Child.prototype = new F();
  Child.prototype.constructor = Child;
  Child.uber = Parent.prototype;
}
// define -> augment
function Shape() {}
Shape.prototype.name = 'Shape';
Shape.prototype.toString = function () {
  return this.constructor.uber
  ? this.constructor.uber.toString() + ', ' + this.name
  : this.name;
};
// define -> inherit -> augment
function TwoDShape() {}
extend(TwoDShape, Shape);
TwoDShape.prototype.name = '2D shape';
// define
function Triangle(side, height) {
  this.side = side;
  this.height = height;
}
// inherit
extend(Triangle, TwoDShape);
// augment
Triangle.prototype.name = 'Triangle';
Triangle.prototype.getArea = function () {
  return this.side * this.height / 2;
};

コンソールでの入力:

var my = new Triangle(5, 10);
my.toString();

出力: "Shape, 2D Shape, Triangle"

派生レベルは次のとおりです: Shape -> TwoDShape -> Triangle

extend 関数は、継承されたコードをカプセル化します。

一時コンストラクター F() の役割: サブクラスのプロパティが変更されても、親クラスのプロパティは変更されません。

uber 属性: 親クラスのプロトタイプを指します。

toString()メソッド内で、コンストラクタの親クラスのプロトタイプが存在するかどうかを確認し、存在する場合はそのtoString()メソッドを呼び出すことで、サブクラスでの親クラスのメソッドの呼び出しを実現します。

推奨学習:「JavaScript 基本チュートリアル

以上がJavaScript ウーバーとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。