| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Functions/Method_definitions | [Back] [Original] |
Get to know MDN better
This feature is well established and works across many devices and browser versions. Its been available across browsers since 20159.
ECMAScript 2015 objects initializers
const obj = {
foo() {
return "bar";
},
};
console.log(obj.foo());
// Expected output: "bar"
var obj = {
property( parameters ) {},
*generator( parameters ) {},
async property( parameters ) {},
async* generator( parameters ) {},
// with computed keys:
[property]( parameters ) {},
*[generator]( parameters ) {},
async [property]( parameters ) {},
// compare getter/setter syntax:
get property() {},
set property(value) {}
};
var obj = {
foo: function () {
/* code */
},
bar: function () {
/* code */
},
};
var obj = {
foo() {
/* code */
},
bar() {
/* code */
},
};
* g(){} g *(){} yield SyntaxErrorAlways use yield in conjunction with the asterisk (*).// Using a named property
var obj2 = {
g: function* () {
var index = 0;
while (true) yield index++;
},
};
// The same object using shorthand syntax
var obj2 = {
*g() {
var index = 0;
while (true) yield index++;
},
};
var it = obj2.g();
console.log(it.next().value); // 0
console.log(it.next().value); // 1
// Using a named property
var obj3 = {
f: async function () {
await some_promise;
},
};
// The same object using shorthand syntax
var obj3 = {
async f() {
await some_promise;
},
};
Generator methods can also be async.
var obj4 = {
f: async function* () {
yield 1;
yield 2;
yield 3;
},
};
// The same object using shorthand syntax
var obj4 = {
async *f() {
yield 1;
yield 2;
yield 3;
},
};
All method definitions are not constructors and will throw a TypeError if you try to instantiate them.
var obj = {
method() {},
};
new obj.method(); // TypeError: obj.method is not a constructor
var obj = {
*g() {},
};
new obj.g(); // TypeError: obj.g is not a constructor (changed in ES2016)
var obj = {
a: "foo",
b() {
return this.a;
},
};
console.log(obj.b()); // "foo"
The shorthand syntax also supports computed property names.
var bar = {
foo0: function () {
return 0;
},
foo1() {
return 1;
},
["foo" + 2]() {
return 2;
},
};
console.log(bar.foo0()); // 0
console.log(bar.foo1()); // 1
console.log(bar.foo2()); // 2
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-method-definitions |
This page was last modified on 2025716 by MDN contributors.
Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |