Heim > Web-Frontend > js-Tutorial > Hauptteil

Was ist ein Literal? Wie verwende ich Literale, um Objekte in JS zu erstellen?

青灯夜游
Freigeben: 2022-08-04 18:03:52
nach vorne
3124 Leute haben es durchsucht

Wie verwende ich Literale, um Objekte in JavaScript zu erstellen? Der folgende Artikel führt Sie in das Verständnis von Literalen ein und stellt vor, wie Sie Objektliterale zum Erstellen von Objekten in JavaScript verwenden. Ich hoffe, er wird Ihnen hilfreich sein!

Was ist ein Literal? Wie verwende ich Literale, um Objekte in JS zu erstellen?

Was ist ein Literal?

Ein Literal ist eine Darstellung, die einen festen Wert ausdrückt, der auch als Konstante bezeichnet wird.

Das ist gängige Meinung Ein Literal ist das, was Sie sehen. Wenn das js-Programm das Literal im Code ausführt, weiß es sofort, um welche Art von Daten es sich handelt und welchen Wert es hat. Es kann zur Darstellung fester Werte verwendet werden, z. Zahlen, Zeichenfolgen, undefinierte, boolesche Typen, Objekte, Literalwerte usw {...}Erstellen Sie schnell Objekte.

var 对象名={ 
    .....
};
Nach dem Login kopieren

Ein Objektliteral ist eine Liste von null oder mehr „property name:value“ eines Objekts, eingeschlossen in ein Klammerpaar ({}).

Beispiel:

var person={ 
    name:"Jack", 
    age:10,
    5:true  
};
Nach dem Login kopieren
  • In diesem Beispiel stellt die linke geschweifte Klammer ({) ein Objektliteral The dar

    beginnt

    , weil es in einem Ausdruckskontext erscheint. {...}快速创建对象。

    var Swapper = {    
            // 数组字面量(用逗号分隔,所有都要加引号)
        images: ["smile.gif", "grim.gif", "frown.gif", "bomb.gif"],
        pos: { 
                //嵌套对象字面量
            x: 40,
            y: 300
        },
        onSwap: function() { 
                //函数
        }
    };
    Nach dem Login kopieren

    对象字面值是封闭在花括号对({})中的一个对象的零个或多个“属性名:值”列表。

    示例:

    var person={
        "name":"Jack",
        "age":29,
        5:true
    };
    Nach dem Login kopieren
    • 在这个例子中,左边的花括号({)表示对象字面量的开始,因为它出现在了表达式上下文(expression context)中。

    • JavaScript 中的表达式上下文(expression context)指的是能够返回一个值(表达式)。

    • 赋值操作符(=)表示后面是一个值,所以左花括号在这里表示一个表达式的开始。

    • 同样的花括号,如果出现在一个语句上下文(statement context)中,例如跟在 if 语句条件的后面,则表示一个语句块的开始。

    • 例子中定义了 name属性,之后是一个冒号,再后面是这个属性的值(name:"Jack")。在对象字面量中,使用逗号来分隔不同的属性,因此”Jack”后面是一个逗号。但是,在 age属性的值 10 的后面不能添加逗号,因为 age 是这个对象的最后一个属性在最后一个属性后面添加逗号,会在 IE7 及更早版本和Opera 中导致错误。

    • 不要忘记结束大括号右边的(;

    对象字面量的值的类型

    对象字面量的值可以是任何数据类型包括数组字面量,函数,嵌套的对象字面量

    var obj = { name: name, age: age };
    
    // ES2015中,属性名和变量名相同时可简写为:
    var obj = { name, age };
    Nach dem Login kopieren
    • 如果有任何的语法规则被打破,如缺少逗号或冒号或大括号,将会触发JavaScript错误。
    • 浏览器的错误信息在指出对象字面量语法错误的位置一般有帮助,但他们不一定会在指出错误的性质完全准确。

    在使用对象字面量时,属性名也可以用字符串

    // 扩展属性,ES2018新特性,可用于克隆或合并对象,浅拷贝,不包括原型
    var obj2 = { ...obj3 };
    Nach dem Login kopieren
    • 上述例子会创建一个对象,包含三个属性,但这里的数值属性名会自动转换为字符串。
    • 在通过对象字面量定义对象时,实际上不会调用Object构造函数(Firefox 2及更早版本会调用Object构造函数;但Firefox3之后就不会了)
      这是因为字面量法创建对象强调该对象仅是一个可变的hash映射,而不是从对象中提取的属性或方法。

    属性名和变量名相同时可简写

    var obj1 = {
        dogName: '可可',
        type: '阿拉斯加犬',
        age: 5 + '岁',
        color: 'red',
        skill: function () {
            console.log('技能' + ':' + 'bark' + ',' + 'showFilm');
        }
    }
    console.log(obj1.dogName);
    obj1.skill();
    Nach dem Login kopieren

    扩展属性

    var obj1 = {};
    Object.getPrototypeOf(obj1) === Object.prototype;	// true
    
    var obj2 = { __proto__: null };
    Object.getPrototypeOf(obj2) === null;				// true
    
    var __proto__= {};
    var obj3 = { "__proto__": __proto__ };
    Object.getPrototypeOf(obj3) === __proto__;			// true
    // 不使用冒号标记的属性定义,不会变更对象的原型,只是名字为__proto__的普通属性
    var obj4 = { __proto__ };
    Object.getPrototypeOf(obj4) === __proto__;			// false
    obj4.hasOwnProperty("__proto__");					// true
    Object.getPrototypeOf(obj4) === Object.prototype;	// true
    
    var obj5 = { __proto__: "not an object or null" };
    obj5.hasOwnProperty("__proto__");					// false
    Object.getPrototypeOf(obj5) === Object.prototype;	// true
    Nach dem Login kopieren

    以字面量方式创建的对象属性默认是可写,可枚举和可配置的

    Was ist ein Literal? Wie verwende ich Literale, um Objekte in JS zu erstellen?

    对象的调用

    对象里面的属性调用 : 对象.属性名 ,这个小点 . 就理解为“ 的 ”

    对象里面属性的另一种调用方式 : 对象['属性名'],注意方括号里面的属性必须加引号,我们后面会用  对象里面的方法调用:对象.方法名() ,注意这个方法名字后面一定加括号

    rrreee

    说明:

    对象的原型默认为Object.prototype。通过定义属性__proto__

  • Ausdruckskontext in JavaScript bezieht sich auf die Fähigkeit, einen Wert (Ausdruck) zurückzugeben.

  • Der Zuweisungsoperator (=) gibt an, dass ihm ein Wert folgt, sodass die linke geschweifte Klammer hier den Anfang eines Ausdrucks anzeigt.
  • Die gleichen geschweiften Klammern geben den Anfang eines Anweisungsblocks an, wenn sie in einem Anweisungskontext erscheinen, z. B. nach einer if-Anweisungsbedingung.
  • Das Beispiel definiert das Namensattribut, gefolgt von einem 🎜Doppelpunkt🎜 und dann dem Wert dieses Attributs (name:"Jack"). In Objektliteralen 🎜verwenden Sie Kommas, um verschiedene Eigenschaften zu trennen🎜, also folgt auf „Jack“ ein Komma. 🎜Aber🎜 Sie können nach dem Wert 10 für das Altersattribut kein Komma hinzufügen, da das Alter das letzte Attribut dieses Objekts ist. 🎜Das Hinzufügen eines Kommas nach dem letzten Attribut führt zu einem Fehler in IE7 und früheren Versionen sowie in Opera. 🎜🎜
  • 🎜Vergessen Sie nicht das (;) auf der rechten Seite der schließenden Klammer🎜
  • 🎜🎜Der Typ des Werts von das Objektliteral🎜🎜🎜Objektliteral Der Wert der Menge kann ein beliebiger Datentyp sein, einschließlich Array-Literale, Funktionen, verschachtelte Objektliterale 🎜rrreee
    • Wenn Syntaxregeln verletzt werden, wie z. B. fehlende Kommas, Doppelpunkte oder geschweifte Klammern , dies löst einen JavaScript-Fehler aus.
    • Browser-Fehlermeldungen sind im Allgemeinen hilfreich, um den Ort von Fehlern in der Objektliteral-Syntax aufzuzeigen, aber sie geben nicht unbedingt ganz genau Aufschluss über die Art des Fehlers.
    🎜🎜Bei Verwendung von Objektliteralen können Attributnamen auch Zeichenfolgen verwenden🎜🎜rrreee
    • Das obige Beispiel erstellt ein Objekt mit drei Attributen, aber die numerischen Attribute hier Der Name wird automatisch angezeigt in einen String umgewandelt.
    • 🎜Beim Definieren eines Objekts über ein Objektliteral wird der Objektkonstruktor nicht tatsächlich aufgerufen (Firefox 2 und frühere Versionen rufen den Objektkonstruktor auf; dies wird jedoch nach Firefox 3 nicht mehr passieren)
      🎜Das liegt daran, dass 🎜Die wörtliche Methode zum Erstellen eines Objekts betont, dass das Objekt nur eine veränderbare Hash-Map ist und keine aus dem Objekt extrahierte Eigenschaft oder Methode. 🎜
    🎜🎜Wenn der Attributname und der Variablenname gleich sind, können sie abgekürzt werden🎜
    🎜rrreee🎜🎜Erweiterte Attribute🎜
    🎜rrreee🎜🎜Objekteigenschaften erstellt in Der Literalmodus ist standardmäßig verfügbar. Beschreibbar, aufzählbar und konfigurierbar 🎜🎜🎜Was ist ein Literal? Wie verwende ich Literale, um Objekte in JS zu erstellen?🎜🎜🎜 🎜 Objekte Der Aufruf von 🎜🎜🎜🎜Der Attributaufruf im Objekt: Object.Property name, dieser kleine Punkt . wird als „von“ verstanden 🎜🎜Eine andere Art von Attribut im Objekt Aufrufende Methode: Object['property name'], bitte beachten Sie, dass die Eigenschaften in eckigen Klammern in Anführungszeichen gesetzt werden müssen. Wir werden später  Methodenaufruf im Objekt verwenden: Object.Method name () code>, bitte beachten Sie, dass dem Methodennamen Klammern folgen müssen 🎜rrreee🎜🎜 Beschreibung: 🎜🎜🎜Der Prototyp des Objekts ist standardmäßig Object.prototype. Ändern Sie den Prototyp, indem Sie den Wert des Attributs __proto__ definieren (es können nur durch Doppelpunkte markierte Attributdefinitionen verwendet werden). Der Prototyp des Objekts wird nur dann auf den angegebenen Wert gesetzt, wenn der angegebene Wert ein Objekt oder null ist, andernfalls ändert sich der Prototyp nicht. 🎜rrreee🎜【Verwandte Empfehlungen: 🎜Javascript-Lern-Tutorial🎜🎜】🎜🎜

    Das obige ist der detaillierte Inhalt vonWas ist ein Literal? Wie verwende ich Literale, um Objekte in JS zu erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage