Baseline Widely available
Class expression ÑÑо ÑпоÑоб опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÐ»Ð°ÑÑа в ECMAScript 2015 (ES6). Ð¡Ñ Ð¾Ð¶Ð¸Ð¹ Ñ function expressions, class expressions Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñм либо не имеÑÑ Ð¸Ð¼ÐµÐ½Ð¸. ÐÑли он именованнÑй, Ñо его Ð¸Ð¼Ñ Ð´Ð¾ÑÑÑпно ÑолÑко внÑÑÑи клаÑÑа. JavaScript клаÑÑÑ Ð¸ÑполÑзÑÑÑ Ð¿ÑоÑоÑипно-оÑиенÑиÑование наÑледование.
СинÑакÑиÑvar MyClass = class [className] [extends] { // Ñело клаÑÑа };ÐпиÑание
Class expression Ð¸Ð¼ÐµÐµÑ ÑÑ
ожий ÑинÑакÑÐ¸Ñ Ñ class declaration (statement). Ðднако в class expression можно опÑÑÑиÑÑ Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа ("binding identifier"), ÑÑо не допÑÑÑимо Ñ class declaration. Также class expression позволÑÐµÑ Ð¿Ð¾Ð²ÑоÑно обÑÑвиÑÑ Ñже ÑÑÑеÑÑвÑÑÑий клаÑÑ Ð¸ ÑÑо не пÑиведÑÑ Ðº оÑибке Ñипа, как пÑи иÑполÑзовании class declaration. СвойÑÑво конÑÑÑÑкÑоÑа ÑвлÑеÑÑÑ Ð¾Ð¿ÑионалÑнÑм. РезÑлÑÑаÑом вÑзова опеÑаÑоÑа typeof
на клаÑÑаÑ
, ÑгенеÑиÑованнÑÑ
пÑи помоÑи class expression, вÑегда бÑÐ´ÐµÑ "function".
Так же, как и пÑи иÑполÑзовании class declaration, Ñело клаÑÑа Ñ class expression бÑÐ´ÐµÑ Ð¸ÑполнÑÑÑÑÑ Ð² ÑÑÑогом Ñежиме.
"use strict";
var Foo = class {}; // ÑвойÑÑво конÑÑÑÑкÑоÑа опÑионалÑно
var Foo = class {}; // повÑоÑное обÑÑвление ÑазÑеÑено
typeof Foo; // возвÑаÑÐ°ÐµÑ "function"
typeof class {}; // возвÑаÑÐ°ÐµÑ "function"
Foo instanceof Object; // true
Foo instanceof Function; // true
class Foo {} // Throws TypeError, doesn't allow re-declaration
ÐÑимеÑÑ ÐÑоÑÑой class expression
ÐÑоÑÑой анонимнÑй class expression, на коÑоÑÑй можно ÑоÑлаÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿ÐµÑеменной "Foo".
var Foo = class {
constructor() {}
bar() {
return "Hello World!";
}
};
var instance = new Foo();
instance.bar(); // "Hello World!"
Foo.name; // "Foo"
ÐменованнÑй class expression
ÐÑли Ð²Ñ Ñ Ð¾ÑиÑе ÑоÑлаÑÑÑÑ Ð½Ð° конкÑеÑнÑй клаÑÑ Ð²Ð½ÑÑÑи Ñела клаÑÑа, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñй class expression. ÐÑо Ð¸Ð¼Ñ Ð±ÑÐ´ÐµÑ Ð´Ð¾ÑÑÑпно ÑолÑко внÑÑÑи облаÑÑи видимоÑÑи Ñамого class expression.
var Foo = class NamedFoo {
constructor() {}
whoIsThere() {
return NamedFoo.name;
}
};
var bar = new Foo();
bar.whoIsThere(); // "NamedFoo"
NamedFoo.name; // ReferenceError: NamedFoo is not defined
Foo.name; // "NamedFoo"
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4