[解決済み] コンストラクタがこれを返さないようにするには、どのような値を返せばよいですか?
2023-04-06 17:25:20
質問
が使用できる具体的な状況はどのようなものですか?
return
以外の値を返すことができます。
this
を使用してコンストラクタを呼び出した場合
new
キーワードで呼び出されたとき?
例
function Foo () {
return something;
}
var foo = new Foo ();
もし私が間違っていなければ、もし
something
は非関数プリミティブで
this
が返されます。そうでなければ
something
が返されます。これは正しいのでしょうか?
言い換えると、どのような値で
something
を引き起こすために
(new Foo () instanceof Foo) === false
?
どのように解決するのですか?
正確な条件は
[[Construct]]
の内部プロパティで使用されます。
new
演算子で使用されます。
ECMA-262 3rd.Editionの仕様より。Edition 仕様書より。
13.2.2
[[Construct]]
を指定すると
[[Construct]]
プロパティがFunction
オブジェクトのF
が が呼び出されると、次のような手順となる。
- 新しいネイティブECMAScriptオブジェクトを作成します。
- を設定する。
[[Class]]
のプロパティにResult(1)
を"Object"
.- のprototypeプロパティの値を取得します。
F
.- もし
Result(3)
がオブジェクトの場合は[[Prototype]]
のプロパティにResult(1)
をResult(3)
.- もし
Result(3)
がオブジェクトでない場合は[[Prototype]]
のプロパティにResult(1)
を元のObject
プロトタイプオブジェクトに に記述されている 15.2.3.1 .- を呼び出す。
[[Call]]
のプロパティを呼び出します。F
を提供します。Result(1)
としてthis
の値として使用し に渡される引数リストを提供します。[[Construct]]
に渡される引数リストを に渡された引数リストを引数値として提供する。- もし
Type(Result(6))
はObject
であればResult(6)
.- 戻る
Result(1)
.
ステップ7と8を見ると、新しいオブジェクトが返されるのは
の型が
Result(6)
(から返される値)。
F
コンストラクタ
関数) は
ではない
であり、オブジェクトではありません。
関連
-
[解決済み] C++で、あるコンストラクタを別のコンストラクタから呼び出す(コンストラクタ・チェイニングを行う)ことは可能ですか?
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] JavaScriptで複数の値を返す?
-
[解決済み] ベースクラスのコンストラクタを呼び出す際のルールは?
-
[解決済み] 抽象クラスはコンストラクタを持つことができますか?
-
[解決済み] React / React Nativeでコンストラクタを使用する場合とgetInitialStateを使用する場合の違いとは何ですか?
-
[解決済み] コンストラクタのコロンメンバー(" : ")の変な構文は何ですか?
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSのDateからDay名
-
[解決済み] ジェスト あるクラスの特定のメソッドをモックする方法
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] Angularjs - 現在の日付を表示する
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] Node.jsのES6クラスをrequireで作る