function catRecord(name, birthdate, mother) {
return {name: name, birth: birthdate, mother: mother};
}
コンストラクターについての私の理解は、オブジェクトを構築するために使用される関数です。
この catRecord 関数はコンストラクターとしてカウントされますか?
function catRecord(name, birthdate, mother) {
return {name: name, birth: birthdate, mother: mother};
}
コンストラクターについての私の理解は、オブジェクトを構築するために使用される関数です。
この catRecord 関数はコンストラクターとしてカウントされますか?
この catRecord 関数はコンストラクターとしてカウントされますか?
いいえ。
はい、コンストラクターに非常に似ていますが、オブジェクトを返すすべての関数/メソッドを「コンストラクター」とは呼びません。継承が関係しない場合は、代わりにファクトリーという用語を使用します。
EcmaScript 仕様では、コンストラクターを単純に
オブジェクトを作成して初期化する関数オブジェクト。
ただし、そのすぐ下に、プロトタイプの継承に関するメモが既にあります。そして、言語の概要では、それは言います
コンストラクターは、プロトタイプベースの継承と共有プロパティを実装するために使用される「<code>prototype」という名前のプロパティを持つ関数です。
したがって、技術的には実装する [[construct]]
すべてのオブジェクトがコンストラクターですが、JavaScript では、「コンストラクター」という用語は、new
キーワードと共に使用され、共通を共有するprototype
(「クラス」を形成する) インスタンスを作成することを意図した関数にのみ使用されます。慣習的に、それらの名前は大文字になります。
コンストラクターは、クラスのインスタンスを作成するたびに自動的に呼び出される関数です。
インスタンスのプロトタイプを作成した Object 関数への参照を返します。このプロパティの値は関数自体への参照であり、関数の名前を含む文字列ではありませんが、読み取り専用ではないことに注意してください (プリミティブなブール値、数値、または文字列値: 1、true、「読み取り専用」を除く)。 )。
Date
クラスのインスタンスを作成する場合:
var e = new Date();
alert(e.constructor); //return Date
次に、そのコンストラクターが返され、それがDateクラスDate
のコンストラクターの名前になります。
同様に Number のインスタンスを作成するとvar n = new Number(5);
、そのコンストラクタはコンストラクタの名前である Number を返します。
参照。
例:
var Vehicle = function Vehicle() {
// ...
}
var vehicle = new Vehicle();
コンストラクターが呼び出されるとどうなりますか?
がnew Vehicle()
呼び出されると、JavaScript は次の 4 つのことを行います。
function Employee() // Class and constructor
{
this.name = "A";
this.age = "23";
}
var a = new Employee(); // Creating instance
alert(a.name); // alerts A
function Employee(a,b) // Class and constructor
{
this.name = a;
this.age = b;
}
var one = new Employee("A",23); // Creating instance
var two = new Employee("B",25); // Creating instance
alert(two.name); // alerts B
上記の例で必要なものがすべて説明されていることを願っています
追加 :
クラスにメソッドを追加したい場合はEmployee
、次を使用して実行する必要がありますprototype
Employee.prototype.printName = function()
{
document.write(this.name);
};
two.printName(); // Writes B