Das neue Attribut, das den es6-Objekten hinzugefügt wurde, ist „Name“. Das Namensattribut kann den Namen der Methode (Funktion) für das Objekt abrufen, zum Beispiel „getName() {console.log(this.name);}“; die Funktion gibt den Funktionsnamen zurück, wenn sie den Namen direkt aufruft Die Methode für das Literalobjekt ist ebenfalls eine Funktion, daher gibt es auch ein Namensattribut. Wenn die Methode des Objekts ein Symbolwert ist, gibt das Namensattribut den Beschreibungsinhalt des Symbols in Klammern zurück.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.
Objekte sind eine sehr wichtige Datenstruktur in JavaScript. ES6 erweitert Objekte erheblich und macht sie einfacher zu verwenden. Das dem es6-Objekt hinzugefügte neue Attribut ist „name“.
Das Namensattribut der Objektmethode
Haben Sie jemals darüber nachgedacht, wie Sie den Namen einer Methode für ein Objekt erhalten? ES6 fügt das Namensattribut der Funktion hinzu. Wenn die Funktion den Namen direkt aufruft, wird der Funktionsname zurückgegeben. Methoden auf Literalobjekten sind ebenfalls Funktionen und verfügen daher auch über ein Namensattribut. Das folgende Beispiel:
var person = { name: "Jack", getName() { console.log(this.name); }, }; person.getName.name // "getName"
Im obigen Code gibt das Attribut name
der Methode getName()
den Funktionsnamen (d. h. Methodennamen) zurück. getName()
方法的 name
属性返回函数名(即方法名)
有两种特殊情况:
Function 构造函数创造的函数,name 属性返回 “anonymous”;
bind 方法创造的函数,name 属性返回 “bound” 加上原函数的名字。
(new Function()).name // "anonymous" var doSomething = function() { // todo }; doSomething.bind().name // "bound doSomething"
如果对象的方法是一个 Symbol 值,那么 name
const key1 = Symbol('description content'); const key2 = Symbol(); let obj = { [key1]() {}, [key2]() {}, }; obj[key1].name // "[description content]" obj[key2].name // ""
name
den Beschreibungsinhalt des Symbols in Klammern zurück. var name = 'imooc'; // ES5 var obj1 = { name: name, } // ES6 var obj2 = { name, }
Erweitertes Wissen: Verbesserungen bei Attributen in es6-Objekten
1. Prägnanter Attributausdruck
ES6 ermöglicht das direkte Schreiben von Variablen und Funktionen als Attribute und Methoden von Objekten1.1 Abkürzung von AttributwertenIn ES5 wissen wir, dass der Wert des Attributs beim Definieren eines Objekts geschrieben werden muss. In ES6 ist festgelegt, dass der Variablenname direkt in das Objekt geschrieben werden kann, wenn der Attributname und der definierte Variablenname identisch sind das Objekt eines Artikels. Wie folgt:
// ES5 function getObj(x, y) { return {x: x, y: y}; } // 等同于 ES6 function getObj(x, y) { return {x, y}; } getObj(1, 2) // {x: 1, y: 2}
const name = '张三' // ES5 var person = { name: name, getName: function() { console.log('imooc') } }; // ES6 var person = { name, getName() { console.log(this.name) } }; console.log(person) // {name: "imooc", getName: ƒ}
var person = {}; function getName () { return person.name } function setName () { person.name = '李四' } function clear () { person = {}; } // ES5 写法 module.exports = { getName: getName setName: setName, clear: clear }; // ES6写法 module.exports = { getName, setName, clear };
// 方法一 obj.name = 'imooc'; // 方法二 obj['a' + 'ge'] = 7;
2. Prägnanter Attributausdruck
Es gibt im Allgemeinen zwei Möglichkeiten, die Attribute eines Objekts in JavaScript zu definieren. Wie folgt:var obj = { name: 'imooc', age: 7 }
var key = 'name'; var obj = { [key]: 'imooc', ['a' + 'ge']: 7 }
var str = 'first name'; var obj = { ['I love imooc']: 'ES6 Wiki', [str]: 'Jack' } console.log(obj['I love imooc']) // ES6 Wiki console.log(obj[str]) // Jack console.log(obj['first name']) // Jack
var person = { name: 'Jack', ['get' + 'Name']() { console.log(this.name) } }; console.log(person.getName()) // Jack
// 报错 var name = 'Jack'; var age = 18; var person = { [name] }; // Uncaught SyntaxError: Unexpected token '}'
var key1 = {name: 'imooc'}; var key2 = {age: 7}; var obj = { [key1]: 'value content 1', [key2]: 'value content 2', } console.log(obj) // {[object Object]: "value content 2"}
var keys = ['imooc', '7']; var obj = { [keys]: 'value content', } console.log(key.toString()) // "imooc,7" console.log(obj) // {imooc,7: "value content"} console.log(obj[keys]) // "value content"
注意 3: 如果属性的表达式是数组时,则和对象不一样。数组在 toString() 后会变成一个字符串,所以对象属性的表达式就是一个字符串。
var keys = ['imooc', '7']; var obj = { [keys]: 'value content', } console.log(key.toString()) // "imooc,7" console.log(obj) // {imooc,7: "value content"} console.log(obj[keys]) // "value content"
上面的代码中可以看出来,数组 keys 在 toString() 得到了 imooc,7 作为 obj 的属性。另外,我们也可以直接使用 keys 获取 obj 对象上的值。
【推荐学习:javascript视频教程】
Das obige ist der detaillierte Inhalt vonWelche neuen Attribute werden den ES6-Objekten hinzugefügt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!