es6 객체에 추가된 새로운 속성은 "name"입니다. name 속성은 객체의 메서드(함수) 이름을 가져올 수 있습니다. 예를 들어 "getName() {console.log(this.name);}" 함수는 name을 직접 호출할 때 함수 이름을 반환합니다. 리터럴 객체의 메소드도 function 이므로 name 속성도 있습니다. 객체의 메소드가 Symbol 값인 경우 name 속성은 괄호 안에 Symbol의 설명 내용을 반환합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.
객체는 JavaScript에서 매우 중요한 데이터 구조입니다. ES6에서는 객체를 크게 확장하고 사용하기 쉽게 만듭니다. es6 객체에 추가된 새 속성은 "name"입니다.
객체 메서드의 이름 속성
객체에서 메서드 이름을 얻는 방법에 대해 생각해 본 적이 있나요? ES6에서는 함수의 name 속성을 추가합니다. 함수가 name을 직접 호출하면 함수 이름이 반환됩니다. 리터럴 객체의 메서드도 함수이므로 name 속성도 갖습니다. 다음 예:
var person = { name: "Jack", getName() { console.log(this.name); }, }; person.getName.name // "getName"
위 코드에서 getName()
메서드의 name
속성은 함수 이름(예: 메서드 이름)을 반환합니다. 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
속성은 괄호 안에 Symbol의 설명 내용을 반환합니다. var name = 'imooc'; // ES5 var obj1 = { name: name, } // ES6 var obj2 = { name, }
확장된 지식: es6 객체의 속성 개선
1. 간결한 속성 표현
ES6에서는 변수와 함수를 객체의 속성과 메서드로 직접 작성할 수 있습니다.1.1 속성 값의 약어ES5에서는 객체를 정의할 때 속성의 값을 적어야 한다고 알고 있습니다. ES6에서는 속성 이름과 정의된 변수 이름이 같으면 다음과 같이 객체에 직접 변수 이름을 쓸 수 있다고 규정하고 있습니다. 아이템의 대상. 다음과 같습니다. 위 코드의
// 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. 간결한 속성 표현
JavaScript에서 객체의 속성을 정의하는 방법은 일반적으로 두 가지가 있습니다.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视频教程】
위 내용은 es6 객체에 추가된 새로운 속성은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!