Erken Hata kuralları, "constructor" adında yalnızca bir metot tanımı bulunmasını ve bunun bir erişici özellik (accessor property) veya üreteç (generator) tanımı olmamasını güvence altına alır.
#15.7.4 Statik Anlambilim: IsStatic
Sözdizimi yönelimli işlem IsStatic hiçbir argüman almaz ve bir Boole değeri döndürür. Aşağıdaki üretimler üzerinden parça parça tanımlanır:
ClassElement ClassElement : MethodDefinition
false döndür.
ClassElement ClassElement : static MethodDefinition
true döndür.
ClassElement ClassElement : FieldDefinition ;
false döndür.
ClassElement ClassElement : static FieldDefinition ;
true döndür.
ClassElement ClassElement : ClassStaticBlock
true döndür.
ClassElement ClassElement : ;
false döndür.
#15.7.5 Statik Anlambilim: NonConstructorElements
Sözdizimi yönelimli işlem NonConstructorElements hiçbir argüman almaz ve ClassElement Ayrıştırma Düğümlerinin bir Listesini döndürür. Aşağıdaki üretimler üzerinden parça parça tanımlanır:
ClassElementList ClassElementList : ClassElement
ClassElement'in ClassElementKind değeri non-constructor-method ise, o zaman
- « ClassElement » döndür.
Yeni ve boş bir Liste (List) döndür.
ClassElementList ClassElementList : ClassElementList ClassElement
list, ClassElementList'in NonConstructorElements değeri olsun.
ClassElement'in ClassElementKind değeri non-constructor-method ise, o zaman
- ClassElement'i list'e ekle.
list döndür.
#15.7.6 Statik Anlambilim: PrototypePropertyNameList
Sözdizimi yönelimli işlem PrototypePropertyNameList hiçbir argüman almaz ve özellik anahtarlarının bir Listesini döndürür. Aşağıdaki üretimler üzerinden parça parça tanımlanır:
ClassElementList ClassElementList : ClassElement
propertyName, ClassElement'in PropName değeri olsun.
propertyName empty ise, yeni ve boş bir Liste döndür.
ClassElement'in IsStatic değeri true ise, yeni ve boş bir Liste döndür.
« propertyName » döndür.
ClassElementList ClassElementList : ClassElementList ClassElement
list, ClassElementList'in PrototypePropertyNameList değeri olsun.
propertyName, ClassElement'in PropName değeri olsun.
propertyName empty ise, list döndür.
ClassElement'in IsStatic değeri true ise, list döndür.
list ile « propertyName » list-concatenation (liste birleşimi) sonucunu döndür.
#15.7.7 Statik Anlambilim: AllPrivateIdentifiersValid
Sözdizimi yönelimli işlem AllPrivateIdentifiersValid, names (Dizelerin bir Listesi) argümanını alır ve bir Boole değeri döndürür.
Bu şartnamede aşağıda listelenmeyen her dilbilgisi üretimi alternatifi, örtük olarak aşağıdaki varsayılan AllPrivateIdentifiersValid tanımına sahiptir:
Bu Ayrıştırma Düğümünün her bir çocuk düğümü child için şunları yap:
child, bir terminal olmayan (nonterminal) örneği ise, o zaman
- names argümanıyla child'ın AllPrivateIdentifiersValid değeri
false ise, false döndür.
true döndür.
MemberExpression MemberExpression : MemberExpression . PrivateIdentifier
names, PrivateIdentifier'ın StringValue değerini içeriyorsa, o zaman
- names argümanıyla MemberExpression'in AllPrivateIdentifiersValid değerini döndür.
false döndür.
CallExpression CallExpression : CallExpression . PrivateIdentifier
names, PrivateIdentifier'ın StringValue değerini içeriyorsa, o zaman
- names argümanıyla CallExpression'in AllPrivateIdentifiersValid değerini döndür.
false döndür.
OptionalChain OptionalChain : ?. PrivateIdentifier
names, PrivateIdentifier'ın StringValue değerini içeriyorsa, true döndür.
false döndür.
OptionalChain OptionalChain : OptionalChain . PrivateIdentifier
names, PrivateIdentifier'ın StringValue değerini içeriyorsa, o zaman
- names argümanıyla OptionalChain'in AllPrivateIdentifiersValid değerini döndür.
false döndür.
ClassBody ClassBody : ClassElementList
newNames, names ile ClassBody'nin PrivateBoundIdentifiers değerinin list-concatenation (liste birleşimi) olsun.
newNames argümanıyla ClassElementList'in AllPrivateIdentifiersValid değerini döndür.
RelationalExpression RelationalExpression : PrivateIdentifier in ShiftExpression
names, PrivateIdentifier'ın StringValue değerini içeriyorsa, o zaman
- names argümanıyla ShiftExpression'in AllPrivateIdentifiersValid değerini döndür.
false döndür.
#15.7.8 Statik Anlambilim: PrivateBoundIdentifiers
Sözdizimi yönelimli işlem PrivateBoundIdentifiers hiçbir argüman almaz ve Dizelerin bir Listesini döndürür. Aşağıdaki üretimler üzerinden parça parça tanımlanır:
FieldDefinition FieldDefinition : ClassElementName Initializeropt
- ClassElementName'in PrivateBoundIdentifiers değerini döndür.
ClassElementName ClassElementName : PrivateIdentifier
- Tek öğesi PrivateIdentifier'ın StringValue değeri olan bir Liste döndür.
ClassElementName ClassElementName : PropertyName
ClassElement ClassElement : ClassStaticBlock ;
- Yeni ve boş bir Liste döndür.
ClassElementList ClassElementList : ClassElementList ClassElement
names1, ClassElementList'in PrivateBoundIdentifiers değeri olsun.
names2, ClassElement'in PrivateBoundIdentifiers değeri olsun.
names1 ve names2'nin list-concatenation (liste birleşimi) sonucunu döndür.
MethodDefinition MethodDefinition : ClassElementName ( UniqueFormalParameters ) { FunctionBody } get ClassElementName ( ) { FunctionBody } set ClassElementName ( PropertySetParameterList ) { FunctionBody }
GeneratorMethod GeneratorMethod : ***** ClassElementName ( UniqueFormalParameters ) { GeneratorBody }
AsyncMethod AsyncMethod : async ClassElementName ( UniqueFormalParameters ) { AsyncFunctionBody }
AsyncGeneratorMethod AsyncGeneratorMethod : async ***** ClassElementName ( UniqueFormalParameters ) { AsyncGeneratorBody }
- ClassElementName'in PrivateBoundIdentifiers değerini döndür.
#15.7.9 Statik Anlambilim: ContainsArguments
Sözdizimi yönelimli işlem ContainsArguments hiçbir argüman almaz ve bir Boole değeri döndürür.
Bu şartnamede aşağıda listelenmeyen her dilbilgisi üretimi alternatifi, örtük olarak aşağıdaki varsayılan ContainsArguments tanımına sahiptir:
Bu Ayrıştırma Düğümünün her bir çocuk düğümü child için şunları yap:
child, bir terminal olmayan (nonterminal) örneği ise, o zaman
- child'ın ContainsArguments değeri
true ise, true döndür.
false döndür.
IdentifierReference IdentifierReference : Identifier
Identifier'ın StringValue değeri "arguments" ise, true döndür.
false döndür.
FunctionDeclaration FunctionDeclaration : function BindingIdentifier ( FormalParameters ) { FunctionBody } function ( FormalParameters ) { FunctionBody }
FunctionExpression FunctionExpression : function BindingIdentifieropt ( FormalParameters ) { FunctionBody }
GeneratorDeclaration GeneratorDeclaration : function ***** BindingIdentifier ( FormalParameters ) { GeneratorBody } function ***** ( FormalParameters ) { GeneratorBody }
GeneratorExpression GeneratorExpression : function ***** BindingIdentifieropt ( FormalParameters ) { GeneratorBody }
AsyncGeneratorDeclaration AsyncGeneratorDeclaration : async function ***** BindingIdentifier ( FormalParameters ) { AsyncGeneratorBody } async function ***** ( FormalParameters ) { AsyncGeneratorBody }
AsyncGeneratorExpression AsyncGeneratorExpression : async function ***** BindingIdentifieropt ( FormalParameters ) { AsyncGeneratorBody }
AsyncFunctionDeclaration AsyncFunctionDeclaration : async function BindingIdentifier ( FormalParameters ) { AsyncFunctionBody } async function ( FormalParameters ) { AsyncFunctionBody }
AsyncFunctionExpression AsyncFunctionExpression : async function BindingIdentifieropt ( FormalParameters ) { AsyncFunctionBody }
false döndür.
MethodDefinition MethodDefinition : ClassElementName ( UniqueFormalParameters ) { FunctionBody } get ClassElementName ( ) { FunctionBody } set ClassElementName ( PropertySetParameterList ) { FunctionBody }
GeneratorMethod GeneratorMethod : ***** ClassElementName ( UniqueFormalParameters ) { GeneratorBody }
AsyncGeneratorMethod AsyncGeneratorMethod : async ***** ClassElementName ( UniqueFormalParameters ) { AsyncGeneratorBody }
AsyncMethod AsyncMethod : async ClassElementName ( UniqueFormalParameters ) { AsyncFunctionBody }
- ClassElementName'in ContainsArguments değerini döndür.
#15.7.10 Çalışma Zamanı Anlambilimi: ClassFieldDefinitionEvaluation
Sözdizimi yönelimli işlem ClassFieldDefinitionEvaluation, homeObj (bir Nesne) argümanını alır ve ya bir ClassFieldDefinition Record (Sınıf Alan Tanım Kaydı) içeren bir normal tamamlanma ya da bir ani tamamlanma döndürür. Aşağıdaki üretimler üzerinden parça parça tanımlanır:
FieldDefinition FieldDefinition : ClassElementName Initializeropt
name, ClassElementName'in ? Evaluation değeri olsun.
Initializer mevcutsa, o zaman
formalParamList, aşağıdaki üretimin bir örneği olsun:
FormalParameters FormalParameters : [empty]
.
envRecord, yürütülmekte olan yürütme bağlamının LexicalEnvironment'ı olsun.
privateEnv, yürütülmekte olan yürütme bağlamının PrivateEnvironment'ı olsun.
sourceText Unicode kod noktalarının boş dizisi olsun.
initializer, OrdinaryFunctionCreate(%Function.prototype%, sourceText, formalParamList, Initializer, non-lexical-this, envRecord, privateEnv) olsun.
MakeMethod(initializer, homeObj) işlemini gerçekleştir.
initializer.[[ClassFieldInitializerName]] değerini name olarak ayarla.
Aksi takdirde,
- initializer
empty olsun.
{ [[Name]]: name, [[Initializer]]: initializer } ClassFieldDefinition Record'unu döndür.