Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – Zugriff und Erstellung von JS-Objektattributen

Eine interessante Frage:

  1. var a = new Object();  
    var b = new Object();  
    var c = new Object();
      
    c[a] = a;  
    c[b] = b;
      
    console.log(c[a] === a); //输出什么?  ---> false
    console.log(c[b] === b); //输出什么?  ---> true
  2. var a = new Object();  
    var b = new Object();  
    var c = new Object();
      
    c.a=a;  
    c.b=b;
      
    console.log(c.a === a); //输出什么?  ---> true
    console.log(c.b === b); //输出什么?  ---> true

Worum es hier eigentlich geht, ist das Wissen rund um den []运算符 和.Bediener.

Anbei finden Sie die relevanten Regeln und die Website, Sie können sie selbst studieren:

MemberExpression: MemberExpression [Ausdruck]

  1. BaseReference sei das Ergebnis der Auswertung von MemberExpression.

  2. Basiswert sei GetValue(baseReference).

  3. ReturnIfAbrupt(baseValue).

  4. PropertyNameReference sei das Ergebnis der Auswertung von Expression.

  5. PropertyNameValue sei GetValue(propertyNameReference).

  6. ReturnIfAbrupt(propertyNameValue).

  7. Sei bv RequireObjectCoercible(baseValue).

  8. ReturnIfAbrupt(bv).

  9. PropertyKey sei ToPropertyKey(propertyNameValue).

  10. ReturnIfAbrupt(propertyKey).

  11. Wenn es sich bei dem Code, der mit der ausgewerteten syntaktischen Produktion übereinstimmt, um Code im strengen Modus handelt, sei „strikt“ wahr, andernfalls sei „strikt“ falsch.

  12. Gibt einen Wert vom Typ Reference zurück, dessen Basiswert bv ist, dessen referenzierter Name propertyKey ist und dessen striktes Referenzflag strict.

  13. ist

MemberExpression: MemberExpression IdentifierName

  1. BaseReference sei das Ergebnis der Auswertung von MemberExpression.

  2. Basiswert sei GetValue(baseReference).

  3. ReturnIfAbrupt(baseValue).

  4. Sei bv RequireObjectCoercible(baseValue).

  5. ReturnIfAbrupt(bv).

  6. EigenschaftNameString sei StringValue von IdentifierName

  7. Wenn es sich bei dem Code, der mit der ausgewerteten syntaktischen Produktion übereinstimmt, um Code im strengen Modus handelt, sei „strikt“ wahr, andernfalls sei „strikt“ falsch.

  8. Gibt einen Wert vom Typ Reference zurück, dessen Basiswert bv ist, dessen referenzierter Name propertyNameString ist und dessen striktes Referenzflag strict.

  9. ist

CallExpression: CallExpression [Ausdruck]

  • Wird auf genau die gleiche Weise ausgewertet wie MemberExpression: MemberExpression [Expression], außer dass der enthaltene CallExpression in Schritt 1 ausgewertet wird.

CallExpression: CallExpression

    Wird auf genau die gleiche Weise ausgewertet wie MemberExpression : MemberExpression , außer dass der enthaltene CallExpression in Schritt 1 ausgewertet wird.
ECMAScript 2015 #sec-property-accessors
ringa_leeringa_lee2663 Tage vor923

Antworte allen(1)Ich werde antworten

  • 某草草

    某草草2017-07-05 11:00:49

    其实就是个 Object toString 的问题。

    Antwort
    0
  • StornierenAntwort