ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°:
class C {
static length () { return "twelve"; }
}
ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅:
var C = (function () {
function C() {
}
C.length = function () {
return "twelve";
};
return C;
})();
ΠΠ΄Π΅ΡΡ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ length
ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π² Firefox ΠΈ Chrome), ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ±ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ² C.length()
. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° length
ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ?
ΠΡΠΏΡΡΠ΅Π½ ΠΈΠ· ΠΊΠΎΠ΄Π° codeplex # 1260 .
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΈΠΌ Π½Π΅Π΄Π°Π²Π½ΠΎ. :(
Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ (Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ):
class C {
static name = 'something';
static arguments = 'args';
static caller = 'caller';
}
console.log(C.name); // 'C'
console.log(C.arguments); // null
console.log(C.caller); // null
ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ.
Π― Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° name
, caller
ΠΈ length
Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌΡ. ΠΠ½ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. ΠΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΡΠ΅ ΠΈΠΌ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Ρ.
@tinganho ΡΠΎΠ³Π»Π°ΡΠΈΠ»ΡΡ
Π₯ΠΎΡΠΎΡΠΎ, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π»ΡΠ΄ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ TS Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡΡ ΠΈΡ
ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠ°ΠΊ name
ΠΈΠ»ΠΈ length
, Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½Ρ, ΡΡΠΎΠ±Ρ ΠΈΡ
ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΠ΄ΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈΡ
ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π°.
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΈΠΌΡ ΠΠ΅Π½Π³ ΡΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ.
Π― ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΡΠΈΠΌ. ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ, Π΅ΡΡΡ Π»ΠΈ Π΅ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠ²ΠΎΠΉΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π»ΡΠ·Ρ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ?
ΠΠΎΠΊΠ° Π²ΠΈΠΆΡ:
Π΄Π»ΠΈΠ½Π°, ΠΈΠΌΡ, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ
Π§ΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π½ΡΡ ΠΈΠΌΠ΅Π½? ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°? ΠΠΈΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ?
Π― Π½ΠΎΠ²ΠΈΡΠΎΠΊ Π² ΡΡΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Ρ ΡΡΠΎ-ΡΠΎ ΡΠΏΡΡΠΊΠ°Ρ, Ρ Π±ΡΠ» Π±Ρ ΠΏΡΠΈΠ·Π½Π°ΡΠ΅Π»Π΅Π½ Π·Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ. : +1:
ΠΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ
class C {
static name = 'something';
static arguments = 'args';
static caller = 'caller';
}
console.log(C.name); // 'C'
console.log(C.arguments); // null
console.log(C.caller); // null
ΠΊ ΡΠ΅ΠΌΡ-ΡΠΎ Π²ΡΠΎΠ΄Π΅
var C = (function () {
function C() {
}
C.__statics = {
name: 'something',
arguments: 'args',
caller: 'caller'
};
return C;
})();
console.log(C.__statics.name); // 'something'
console.log(C.__statics.arguments); // 'args'
console.log(C.__statics.caller); // 'caller'
Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊ Π²ΠΎΠΏΡΠΎΡ ΠΎ stackoverflow: http://stackoverflow.com/a/34644236/390330 : rose:
@zerkms, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅
ΠΠ½ΠΎΠ³Π΄Π° Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ².
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄
interface HasName {
name: string;
}
class Foo {
static name = 'fooClass';
}
let bar: HasName = { name: string };
let q = Math.random() > 0.5 ? Foo : bar;
console.log(q.name);
@RyanCavanaugh , ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ
ΠΡΠ»ΠΈ ΠΈΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π±Π΅Π· ΡΠΈΡΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ, ΡΡΠΎΠΈΡ ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ?
ΠΡΠ»ΠΈ ΠΈΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ Π±Π΅Π· ΡΠΈΡΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ, ΡΡΠΎΠΈΡ ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ?
Π’ΠΎΡΠ½ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΡ ΡΡΠ°Π½ΡΠΏΠ°ΠΉΠ», ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ: rose:
[...] ΠΌΠΎΠΆΠ΅Ρ, ΡΡΠΎΠΈΡ ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ?
ΠΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠΈΠΌΡΠΈΠ²ΡΠΉ Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΡΠ»Π°ΡΡ Π½Π°ΠΌ ΠΏΠΈΠ°Ρ! :ΠΏΠΎΠ΄ΠΌΠΈΠ³ΠΈΠ²Π°Π½ΠΈΠ΅:
ΠΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Object.defineProperty
?
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
class C {
static length() { return "twelve"; }
}
Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ΠΎ Π½Π° ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅
var C = (function () {
function C() {
}
Object.defineProperty(C, "length", {
value: function () { return "twelve"; },
writable: true
});
return C;
}());
@ nicolo-ribaudo ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅: Π½ΠΎ Ρ Π±Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅Π» ΠΎΡΠΈΠ±ΠΊΡ ΡΠ°ΠΊΠΎΠΉ ΡΡΠ°Π½ΡΠΏΠΈΠ»Π΅. TypeScript ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΊΠ»ΠΎΠ½ΡΠ΅ΡΡΡ ΠΊ ΠΈΠ·ΡΡΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ JavaScript_: rose:
TypeScript ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΊΠ»ΠΎΠ½ΡΠ΅ΡΡΡ ΠΊ ΠΈΠ·ΡΡΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ JavaScript.
Π Π°Π·Π²Π΅ Π½Π΅ Π²ΡΡ ΠΈΠ΄Π΅Ρ TS ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ JS, Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² ΠΏΡΠΎΠ±Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ.
Π Π°Π·Π²Π΅ Π½Π΅ Π²ΡΡ ΠΈΠ΄Π΅Ρ TS ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ JS, Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² ΠΏΡΠΎΠ±Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ.
ΠΠ°. ΠΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ JavaScript. ΠΠΎΠ·ΡΠΌΠ΅ΠΌ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, null
ΠΈ undefined
. TypeScript ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ±Π° (Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π΅Π³ΠΎ Π² ΠΎΠ΄Π½Ρ Π²Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Dart https://www.dartlang.org/docs/synonyms/). TypeScript Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ (Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΡΡΠ°Π½ΡΠΏΠΈΠ»Π΅), Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ JavaScript: rose:
ΠΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ - ΠΌΠΎΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈ Π½Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΎ Π½ΠΈΠΊΠ΅ΠΌ, ΠΊΡΠΎΠΌΠ΅ ΠΌΠ΅Π½Ρ: rose:
ΠΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ, Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ES6 / 2015 ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² Chrome ΠΈ Firefox. ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, ΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ Ρ @ nicolo-ribaudo ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ (ΡΠΌ. β 9778).
Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ:
class Foo {
constructor() {}
}
class Bar {
static length() {}
static name() {}
static caller() {}
}
Foo.name = "FooChanged";
Bar.name = "Baz";
console.log(Foo.name) // Logs "Foo". Foo.name remains unwritable
console.log(Bar.name) // Logs "Baz". Bar.name became writable
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ @tinganho ΡΠ°Π½Π΅Π΅ ΠΏΠΈΡΠ°Π» ΠΎ ΡΡΠ΅Π½ΠΈΡ name
, length
ΠΈ caller
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ, ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ
ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° (ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΌΠΎΠΈ Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π² MDN ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½ΡΡ
ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ Function.name
Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ°).
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Object.defineProperty
ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ @ nicolo-ribaudo, ΡΠΎΡΠ½ΠΎ ΠΈΠΌΠΈΡΠΈΡΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π‘Π»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΡ
, Π½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ
Ρ ES5 Π²Π΅ΡΡΠΈΡΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ² Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ configurable: false
. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡ
writable: true
Π΄Π»Ρ Π½ΠΈΡ
Π½Π΅ ΡΠ΄Π°ΡΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΌ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Function.name )
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³, ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±ΡΠ» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
Object.defineProperty()
Π΄Π»Ρ ΡΠ΅Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ es3
. ΠΠ΄Π½Π°ΠΊΠΎ Π±Π΅Π· Object.defineProperty
Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ΄Π° ES3 Π² ΡΡΠ΅Π΄Π΅ ES5 ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Π±Ρ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ ΡΠ΅Π»ΠΈ es3
Object.defineProperty()
ΠΈ writable: true
Π΄Π»Ρ ΡΠ΅Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ es5
ΠΈ Π²ΡΠ΄Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ / ΠΎΡΠΈΠ±ΠΊΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΡ
ΠΈΠΌΠ΅Π½ ΡΠ²ΠΎΠΉΡΡΠ² ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
x of version <= y
ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ, ΡΠ°ΠΌΡΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ Π±ΡΠ»ΠΎ Π±Ρ Π²ΡΠ±ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΠΌΡ.ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π»ΡΠ±ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ Π±Ρ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Π½ΡΠ½Π΅ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ (TS 1.8.10), ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°.
ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ : Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ
@RyanCavanaugh : Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ Π΅ΡΠ΅ ΡΠ°Π· Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΡΡΠΎΠΌΡ Π²ΠΎΠΏΡΠΎΡΡ Π΄Π»Ρ Π²Π΅Ρ ΠΈ TS 2.0.1. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ, Π½ΠΎ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π²Ρ Π²ΡΠ±Π΅ΡΠ΅ΡΠ΅, Π²ΡΡ ΠΎΠ΄ ΡΠΌΠΈΡΡΠ΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ (ΡΠΌ. ΠΠΎΠΉ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ). Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π»ΡΡΡΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π²ΡΠΏΡΡΠΊ TS 2.0.
Π’Π΅Π³ΠΈ Π² PR ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° TypeScript, ΠΈΠΌΠ΅ΡΡΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ, ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠΎ ΠΎΡΠΊΡΡΡΡΠΌ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΡΠΎ-ΡΠΎ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΡΡΡΡΡ Π΅Ρ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° TypeScript Π½Π΅ ΠΏΠΎΡΡΠ²ΡΡΠ²ΡΠ΅Ρ, ΡΡΠΎ Ρ Π½ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ΅ΡΡΠ° Π² Π±ΡΠΊΠ»ΠΎΠ³Π΅, ΡΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΅Π΅ Π² Π²ΡΠΏΡΡΠΊ (ΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π·Π°ΠΉΠΌΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ).
@kitsonk Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΠ»ΠΈ ΡΡΠΈΠΊΠ΅ΡΠΊΡ PR. ΠΡΠΌΠ°Ρ, Ρ ΡΡΠΎ ΠΏΠΎΠ½ΡΠ». Π― ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» Π΅ΡΠ΅ ΡΠ°Π· ΠΎΡΠ΅Π½ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ _name_ ΠΈΠ»ΠΈ _length_, Π½Π΅ ΡΠ°ΠΊ ΠΌΠ°Π»ΠΎΠ²Π΅ΡΠΎΡΡΠ½Ρ, ΠΈ TS Π²ΡΠ΄Π°Π΅Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Ρ Π±Ρ Π΄Π°ΠΆΠ΅ Π½Π΅ Π½Π°Π·ΡΠ²Π°Π» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Β«ΠΊΡΠ°ΠΉΠ½ΠΈΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌΒ».
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π»Π΅ΠΆΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ·ΡΠΊΠ°, ΠΈ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΅ΡΠ΅ Π½Π΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° Π²ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅, ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ ΠΎΡΠ΅Π½Ρ, ΡΠΌΠΎΠ³Ρ Π»ΠΈ Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ PR, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ·Π½Π°ΡΡ, ΡΡΠΎ Ρ Π΅ΡΠ΅ Π½Π΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ ΠΎΠ± ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Ρ TS ΠΈ Π±ΠΎΡΡΡ, ΡΡΠΎ TS 2.0 Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΡΡΠ΅Π½ ΡΠ°Π½ΡΡΠ΅.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ, Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ES6 / 2015 ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² Chrome ΠΈ Firefox. ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, ΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ Ρ @ nicolo-ribaudo ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ (ΡΠΌ. β 9778).
Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ:
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ @tinganho ΡΠ°Π½Π΅Π΅ ΠΏΠΈΡΠ°Π» ΠΎ ΡΡΠ΅Π½ΠΈΡ
name
,length
ΠΈcaller
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ, ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° (ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΌΠΎΠΈ Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π² MDN ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎFunction.name
Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ°).Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
Object.defineProperty
ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ @ nicolo-ribaudo, ΡΠΎΡΠ½ΠΎ ΠΈΠΌΠΈΡΠΈΡΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π‘Π»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΡ , Π½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ Ρ ES5 Π²Π΅ΡΡΠΈΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ² Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅configurable: false
. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΡwritable: true
Π΄Π»Ρ Π½ΠΈΡ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΌ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Function.name )ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³, ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±ΡΠ» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
Object.defineProperty()
Π΄Π»Ρ ΡΠ΅Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈes3
. ΠΠ΄Π½Π°ΠΊΠΎ Π±Π΅Π·Object.defineProperty
Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ΄Π° ES3 Π² ΡΡΠ΅Π΄Π΅ ES5 ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Π±Ρ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ ΡΠ΅Π»ΠΈes3
Object.defineProperty()
ΠΈwritable: true
Π΄Π»Ρ ΡΠ΅Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈes5
ΠΈ Π²ΡΠ΄Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ / ΠΎΡΠΈΠ±ΠΊΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΈΠΌΠ΅Π½ ΡΠ²ΠΎΠΉΡΡΠ² ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρx of version <= y
ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ, ΡΠ°ΠΌΡΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ Π±ΡΠ»ΠΎ Π±Ρ Π²ΡΠ±ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΠΌΡ.ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π»ΡΠ±ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ Π±Ρ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Π½ΡΠ½Π΅ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ (TS 1.8.10), ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°.
ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ : Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ