レッスンに戻る

2つの関数から1つのオブジェクト

重要度: 2

A関数とB関数が、new A() == new B()となるように作成することは可能ですか?

function A() { ... }
function B() { ... }

let a = new A();
let b = new B();

alert( a == b ); // true

可能であれば、コードの例を示してください。

はい、可能です。

関数がオブジェクトを返した場合、newはそのオブジェクトをthisの代わりに返します。

つまり、外部定義されている同じオブジェクトobjを返すことができます。

let obj = {};

function A() { return obj; }
function B() { return obj; }

alert( new A() == new B() ); // true