new
オペレーターの使い方を学ぶだけでなく、オペレーターがどのように機能するかを知りたい.ECMAScript 5標準を調べたところ、アルゴリズムがどのように機能するかを説明していることがわかりましたが、その意味について少し混乱しています.
生産性
NewExpression : new NewExpression
は次のように評価されます。
- NewExpression
ref
を評価した結果とします。- GetValue
constructor
(ref) とします。- でない場合
Type(constructor)
はObject
、例外をスローしTypeError
ます。constructor
内部メソッドを実装していない場合は[[Construct]]
、例外をスローしTypeError
ます。[[Construct]]
引数を指定せずに on の内部メソッドを呼び出した結果を返しconstructor
ます (つまり、引数の空のリスト)。
この例を使用して、上記のアルゴリズムを理解しようとします。
var f = function() {};
var h = new f();
特に最初のステップがよくわからないので、他のステップをたどることができません。
- NewExpression
ref
を評価した結果とします。
var h = new f();
~~~ ~~~~
| \_________ NewExpression
new operator
ref
の値ということf()
ですか?しかし、それはundefined
です。
3. でない場合
Type(constructor)
はObject
、例外をスローしTypeError
ます。
しかし、関数の型は、例外f
をスローしますか?TypeError
5.
[[Construct]]
引数を指定せずに on の内部メソッドを呼び出した結果を返しconstructor
ます (つまり、引数の空のリスト)。
[[Construct]]
関数の内部プロパティ、それを呼び出す意味は何constructor
ですか?