JavaScriptのfn()と新しいfn()の基本的な違い


12

新しいキーワードがある場合とない場合の関数呼び出しのすべての面で、javascriptの違いは何ですか?私はすべての間で何が違うのかということですか?

testFn()new testFn()

回答:


13

new新しい(空の)オブジェクトとのセットを作成しthis、それを、そのオブジェクトのコンストラクターとして作用する、関数を呼び出します(操作してthis何か)。newキーワードを指定せずに同じ関数を呼び出すと、this現在の意味に基づいて機能します。


これには他に何かありますか?
akp

@akpいいえ、本当に簡単です。言及されていないものを除いて、関数が明示的に参照型を返す場合、それが返されnew、作成されたオブジェクトは無駄になります。
エサイリヤ

2
を使用newすると、新しいオブジェクトのプロトタイプが、新しいオブジェクトが渡される最初の関数のプロトタイプを参照するように設定されます。他の手段で合法的に行動することはできないと思います。
supercat 14

あなたは正しい、私はそれを見逃した。
user281377 14

1

これらのバリアントは構文的に異なります。「新しい」バリアントでは、関数がコンストラクターであると仮定します。「new」のないバリアント、コンストラクタではないことを前提としています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.