ホームページ >ウェブフロントエンド >フロントエンドQ&A >JavaScriptでコンストラクタから値を返す方法

JavaScriptでコンストラクタから値を返す方法

WBOY
WBOYオリジナル
2023-05-17 20:39:07785ブラウズ

JavaScript は動的プログラミング言語であり、その重要な機能の 1 つはオブジェクト指向プログラミング (オブジェクト指向プログラミング、OOP) のサポートです。他のプログラミング言語と同様、JavaScript のコンストラクターはオブジェクトの作成において重要な役割を果たします。コンストラクターは、オブジェクトのプロパティとメソッドを定義するだけでなく、オブジェクトの作成時に値を返すこともできます。この記事では、JavaScript のコンストラクターの戻り値に関する関連知識を紹介します。

コンストラクターの基本定義

コンストラクターは、新しいオブジェクトを作成するために使用される特別なタイプの関数です。 JavaScript では、コンストラクターの名前が大文字で始まる点が通常の関数との違いの 1 つです。コンストラクターは通常、新しく作成されたオブジェクトを初期化し、プロパティとメソッドをオブジェクトに割り当てるために使用されます。以下のコードでは、人間オブジェクトを作成する Person というコンストラクターを定義します。

function Person(name, age) {
  this.name = name;
  this.age = age;
  this.sayHello = function() {
    console.log("Hello, my name is " + this.name + ", I am " + this.age + " years old.");
  }
}

上記のコードでは、 person は、人間オブジェクトを初期化するために使用される 2 つのパラメーター name と age を受け入れるコンストラクターです。 this キーワードは現在作成中のオブジェクトを指すために使用され、this キーワードを通じてオブジェクトごとに異なる属性値とメソッドを指定できます。オブジェクト内の属性とメソッドには、対応する値があります。属性値には、数値、文字列、ブール値など、任意のタイプの値を指定できます。メソッドは通常、関数です。

パーソン オブジェクトを作成するときは、次のメソッドを使用できます。

var person = new Person("Tom", 20);

このコード行は、person という名前のオブジェクトを作成し、 Person コンストラクターを使用して、name と age パラメーターを渡します。次に、オブジェクトのsayHello メソッドを呼び出します。

person.sayHello(); // 输出:Hello, my name is Tom, I am 20 years old.

上記のコードでは、person オブジェクトのsayHello メソッドを呼び出し、いくつかの情報を出力します。

コンストラクターの戻り値

JavaScript では、コンストラクターは戻り値を持つことができ、戻り値は任意の型にすることができます。コンストラクターが明示的に値を返さない場合、デフォルトで新しいオブジェクトが返されます。コンストラクターが通常の値を返した場合、その値は無視され、新しいオブジェクトが返されます。コンストラクターがオブジェクトを返す場合、そのオブジェクトは作成された元のオブジェクトを置き換えます。次のコードは、コンストラクターの戻り値のさまざまな状況を示しています。

function Cat(name, age) {
  this.name = name;
  this.age = age;
  this.sayHello = function() {
    console.log("Hello, my name is " + this.name + ", I am " + this.age + " years old.");
  }
  // 返回值为undefined
}

var cat1 = new Cat("Jack", 3);
var cat2 = new Cat("Mimi", 4);

console.log(cat1); // 输出:Cat {name: "Jack", age: 3, sayHello: ƒ}
console.log(cat2); // 输出:Cat {name: "Mimi", age: 4, sayHello: ƒ}

上記のコードでは、Cat コンストラクターは最後に値を返しませんが、2 つの新しいオブジェクト cat1 と cat2 が引き続き作成され、正しくプロパティとメソッドはオブジェクトごとに設定されます。

次に、通常の値を返す例を見てみましょう。

function Dog(name, age) {
  this.name = name;
  this.age = age;
  this.sayHello = function() {
    console.log("Hello, my name is " + this.name + ", I am " + this.age + " years old.");
  }
  return "This is a new dog."; // 返回一个字符串
}

var dog1 = new Dog("Puppy", 1);
var dog2 = new Dog("Teddy", 2);

console.log(dog1); // 输出:Dog {name: "Puppy", age: 1, sayHello: ƒ}
console.log(dog2); // 输出:Dog {name: "Teddy", age: 2, sayHello: ƒ}

コンストラクターが文字列を返す場合、それはオブジェクトの作成には影響しません。この場合、コンストラクターの戻り値は無視され、新しいオブジェクトが返されます。

最後に、オブジェクトを返す例を見てみましょう:

function Car(model, year) {
  this.model = model;
  this.year = year;
  this.engine = {
    cylinders: 4,
    displacement: 2.0,
    horsepower: 200
  };
  return this.engine; // 返回一个对象
}

var car1 = new Car("BMW", 2017);
var car2 = new Car("Mercedes-Benz", 2018);

console.log(car1); // 输出:{cylinders: 4, displacement: 2.0, horsepower: 200}
console.log(car2); // 输出:{cylinders: 4, displacement: 2.0, horsepower: 200}

上の例では、Car コンストラクターは car1.engine オブジェクトを返し、エンジンのみを含む新しいオブジェクト car1 を作成します。物体。同じコンストラクターを使用して car2 オブジェクトが再度作成されると、同じエンジン オブジェクトが返されます。

概要

上記の例を通して、JavaScript ではコンストラクターが戻り値を持つことができ、戻り値の型は未定義の通常の値を含む任意の型になり得ることがわかります。とオブジェクト。デフォルトでは、コンストラクターは新しいオブジェクトを返します。コンストラクターが未定義でない値 (null を含む) を返した場合、その値は元のオブジェクトを置き換えます。コンストラクターの戻り値のルールを理解することは、JavaScript のオブジェクト指向プログラミング機能をより深く理解し、使用するのに役立ちます。

以上がJavaScriptでコンストラクタから値を返す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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