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ですか?