ÙÙ Ø§ÙØ¨Ø±Ù جة اÙÙ ÙØ¬ÙØ© ÙÙÙØ§Ø¦Ùات Ø * اÙÙØ¦Ø© * عبارة Ø¹Ù ÙØ§Ùب ر٠ز Ø¨Ø±ÙØ§Ù ج ÙØ§Ø¨Ù ÙÙØªÙØ³ÙØ¹ ÙØ¥Ùشاء اÙÙØ§Ø¦Ùات Ø ÙÙÙÙØ± اÙÙÙÙ Ø§ÙØ£ÙÙÙØ© ÙÙØØ§ÙØ© (Ù ØªØºÙØ±Ø§Øª Ø§ÙØ£Ø¹Ø¶Ø§Ø¡) ÙØªÙÙÙØ° Ø§ÙØ³ÙÙÙ (ÙØ¸Ø§Ø¦Ù Ø§ÙØ£Ø¹Ø¶Ø§Ø¡ Ø£Ù Ø§ÙØ£Ø³Ø§ÙÙØ¨).
٠٠اÙÙØ§ØÙØ© Ø§ÙØ¹Ù ÙÙØ© Ø ÙØØªØ§Ø¬ ØºØ§ÙØ¨Ùا Ø¥ÙÙ Ø¥ÙØ´Ø§Ø¡ Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØ¹Ùاصر Ù Ù ÙÙØ³ اÙÙÙØ¹ Ø Ù Ø«Ù Ø§Ù٠ستخد٠ÙÙ Ø£Ù Ø§ÙØ³Ùع Ø£Ù Ø£ÙØ§ ÙØ§Ù.
ÙÙ
ا ÙØ¹ÙÙ
باÙÙØ¹Ù Ù
٠اÙÙØµÙ <info: buildor-new> Ø ÙÙ
Ù٠أ٠تساعد اÙÙØ¸ÙÙØ© Ø§ÙØ¬Ø¯Ùدة Ù٠ذÙÙ.
ÙÙÙÙ ÙÙ Ø¬Ø§ÙØ§ Ø³ÙØ±Ùبت Ø§ÙØØ¯ÙØ«Ø© Ø ÙÙØ§Ù بÙÙØ© âØµÙÙâ Ø£Ùثر ØªÙØ¯Ù ÙØ§ Ø ØªÙØ¯Ù Ù ÙØ²Ø§Øª Ø¬Ø¯ÙØ¯Ø© رائعة Ù ÙÙØ¯Ø© ÙÙØ¨Ø±Ù جة اÙÙ ÙØ¬ÙØ© ÙÙÙØ§Ø¦Ùات.
Ø§ÙØµÙغة Ø§ÙØ£Ø³Ø§Ø³ÙØ© ÙÙClass
Ø§ÙØµÙغة Ø§ÙØ£Ø³Ø§Ø³ÙØ© ÙÙ:
class MyClass {
// class methods
constructor() { ... }
method1() { ... }
method2() { ... }
method3() { ... }
...
}
Ø«Ù
استخدÙ
New MyClass () ÙØ¥Ùشاء ÙØ§Ø¦Ù Ø¬Ø¯ÙØ¯ بÙÙ Ø§ÙØ·Ø±Ù اÙÙ
درجة.
ÙØªÙ
استدعاء طرÙÙØ© constructor () تÙÙØ§Ø¦ÙÙØ§ Ø¨ÙØ§Ø³Ø·Ø© new Ø ØØªÙ ÙØªÙ
ÙÙ Ù
٠تÙÙØ¦Ø© اÙÙØ§Ø¦Ù ÙÙØ§Ù.
ÙÙ Ø«ÙØ§:
class User {
constructor(name) {
this.name = name;
}
sayHi() {
alert(this.name);
}
}
// Usage:
let user = new User('John');
user.sayHi();
When new User("John") is called:
- A new object is created.
- The
constructorruns with the given argument and assigns it tothis.name.
⦠ثÙ
ÙÙ
ÙÙÙØ§ استدعاء طر٠اÙÙØ§Ø¦Ù Ø Ù
ث٠user.sayHi ().
٠٠اÙ٠شاÙÙ Ø§ÙØ´Ø§Ø¦Ø¹Ø© ÙÙÙ Ø·ÙØ±Ù٠اÙ٠بتدئÙÙ ÙØ¶Ø¹ ÙØ§ØµÙØ© بÙ٠طر٠اÙÙØµÙ Ø Ù Ù Ø§ ÙØ¤Ø¯Ù Ø¥Ù٠خطأ ÙÙ Ø¨ÙØ§Ø¡ Ø§ÙØ¬Ù ÙØ©.
ÙØ§ ÙØ¬Ø¨ Ø§ÙØ®ÙØ· بÙÙ Ø§ÙØªØ¯ÙÙÙ ÙÙØ§ ÙØØ±Ù Ø§ÙØ´ÙØ¡. داخ٠اÙÙØµÙ Ø§ÙØ¯Ø±Ø§Ø³Ù Ø ÙØ§ ÙÙØ²Ù ÙØ¬Ùد ÙÙØ§ØµÙ.
٠ا Ù٠اÙclass Ø
Ø¥Ø°Ù Ø Ù Ø§ ÙÙ âØ§ÙØ·Ø¨ÙØ©â Ø¨Ø§ÙØ¶Ø¨Ø·Ø ÙØ°Ø§ ÙÙØ³ ÙÙØ§ÙÙØ§ Ø¬Ø¯ÙØ¯Ùا ØªÙ Ø§Ù ÙØ§ عÙ٠٠ستÙ٠اÙÙØºØ© Ø Ù٠ا ÙØ¯ ÙØ¹ØªÙد اÙ٠رء.
دعÙÙØ§ ÙÙØ´Ù Ø¹Ù Ø£Ù Ø³ØØ± ÙÙØ±Ù ٠ا ÙÙ Ø§ÙØµÙ ØÙا. Ø³ÙØ³Ø§Ø¹Ø¯ ذÙÙ ÙÙ ÙÙÙ Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØ¬ÙØ§ÙØ¨ اÙÙ Ø¹ÙØ¯Ø©.
ÙÙ JavaScript Ø Ø§ÙÙØ¦Ø© ÙÙ ÙÙØ¹ ٠٠اÙÙØ¸Ø§Ø¦Ù.
ÙÙØ§ Ø Ø£ÙÙ ÙØ¸Ø±Ø©:
class User {
constructor(name) { this.name = name; }
sayHi() { alert(this.name); }
}
// proof: User is a function
alert(typeof User); // function
Ù
ا ÙÙØ¹ÙÙ Ø¨ÙØ§Ø¡ Ù
ستخدÙ
اÙÙØ¦Ø© {... } ØÙÙØ§ ÙÙ:
- Ø¥ÙØ´Ø§Ø¡ ÙØ¸ÙÙØ© باسÙ
âØ§ÙÙ
ستخدÙ
â Ø ÙØ§ÙØªÙ ØªØµØ¨Ø ÙØªÙجة ÙØ¥Ø¹Ùا٠اÙÙØ¦Ø©. ÙØªÙ
أخذ رÙ
ز اÙÙØ¸ÙÙØ© Ù
٠طرÙÙØ©
اÙÙ ÙØ´Ø¦(ÙÙØªØ±Ø¶ Ø£ÙÙØ§ ÙØ§Ø±ØºØ© إذا ÙÙ ÙÙØªØ¨ Ù Ø«Ù ÙØ°Ù Ø§ÙØ·Ø±ÙÙØ©). - ÙØ®Ø²Ù طر٠اÙÙØµÙ Ø Ù
Ø«Ù
sayHiØ ÙÙUser.prototype.
بعد Ø¥ÙØ´Ø§Ø¡ ÙØ§Ø¦Ù âÙ Ø³ØªØ®Ø¯Ù Ø¬Ø¯ÙØ¯â Ø Ø¹ÙØ¯Ù ا ÙØ³Ù ٠أسÙÙØ¨Ù Ø ÙØªÙ أخذ٠٠٠اÙÙÙ ÙØ°Ø¬ Ø§ÙØ£ÙÙÙ Ø ØªÙ Ø§Ù ÙØ§ Ù٠ا ÙÙ Ù ÙØ¶Ø Ù٠اÙÙØµÙ <info: function-prototype>. ÙØ°Ø§ ÙØ¥Ù اÙÙØ§Ø¦Ù ÙØ¯ÙÙ ØÙ اÙÙØµÙ٠إÙ٠أساÙÙØ¨ اÙÙØµÙ.
ÙÙ ÙÙÙØ§ ØªÙØ¶ÙØ ÙØªÙجة Ø¥Ø¹ÙØ§Ù â٠ستخد٠اÙÙØ¦Ø©â Ù٠ا ÙÙÙ:
Ø¥ÙÙÙ ÙÙØ¯ ÙØªØªÙÙØ± ÙÙÙ:
class User {
constructor(name) {
this.name = name;
}
sayHi() {
alert(this.name);
}
}
// class is a function
alert(typeof User); // function
// ...or, more precisely, the constructor method
alert(User === User.prototype.constructor); // true
// The methods are in User.prototype, e.g:
alert(User.prototype.sayHi); // alert(this.name);
// there are exactly two methods in the prototype
alert(Object.getOwnPropertyNames(User.prototype)); // constructor, sayHi
ÙÙØ³ ٠جرد Ø³ÙØ± ÙØÙÙ
Ø£ØÙاÙÙØ§ ÙÙÙ٠اÙÙØ§Ø³ Ø£Ù âclassâ Ø¹Ø¨Ø§Ø±Ø© Ø¹Ù âØ³ÙØ± ÙØÙÙâ (بÙÙØ© ت٠تص٠ÙÙ ÙØ§ ÙØªØ³ÙÙÙ ÙØ±Ø§Ø¡Ø© Ø§ÙØ£Ø´Ùاء Ø ÙÙÙÙ ÙØ§ ØªÙØ¯Ù Ø£Ù Ø´ÙØ¡ Ø¬Ø¯ÙØ¯) Ø ÙØ£ÙÙ ÙÙ ÙÙÙØ§ Ù٠اÙÙØ§Ùع Ø£Ù ÙØ¹ÙÙ Ø§ÙØ´ÙØ¡ ÙÙØ³Ù بدÙÙ ÙÙÙ Ø© âclassâ Ø¹ÙÙ Ø§ÙØ¥Ø·ÙاÙ:
// rewriting class User in pure functions
// 1. Create constructor function
function User(name) {
this.name = name;
}
// a function prototype has "constructor" property by default,
// so we don't need to create it
// 2. Add the method to prototype
User.prototype.sayHi = function () {
alert(this.name);
};
// Usage:
let user = new User('John');
user.sayHi();
ÙØªÙجة ÙØ°Ø§ Ø§ÙØªØ¹Ø±ÙÙ ÙÙ ÙÙØ³Ùا. ÙØ°Ø§ Ø ÙÙØ§Ù باÙÙØ¹Ù أسباب تجع٠٠٠اÙÙ Ù Ù٠اعتبار âclassâ Ø³ÙØ±ÙØ§ ÙØÙÙÙØ§ ÙØªØØ¯Ùد اÙÙ ÙØ´Ø¦ ٠ع طر٠اÙÙÙ ÙØ°Ø¬ Ø§ÙØ£ÙÙÙ.
ÙØ§ تزا٠ÙÙØ§Ù Ø§Ø®ØªÙØ§Ùات Ù ÙÙ Ø©.
- Ø£ÙÙØ§Ù Ø ÙØªÙ
تصÙÙÙ Ø¯Ø§ÙØ© تÙ
Ø¥ÙØ´Ø§Ø¤Ùا Ø¨ÙØ§Ø³Ø·Ø© âclassâ Ø¨Ùاسطة Ø®Ø§ØµÙØ© داخÙÙØ© خاصة
[[FunctionKind]]:" classConstructor ". ÙØ°ÙÙ ÙÙÙ ÙÙØ³Øª ØªÙ Ø§Ù ÙØ§ Ù Ø«Ù Ø¥ÙØ´Ø§Ø¦Ùا ÙØ¯ÙÙÙØ§.
تÙÙÙ
اÙÙØºØ© Ø¨Ø§ÙØªØÙÙ Ù
Ù ÙØ°Ù Ø§ÙØ®Ø§ØµÙØ© Ù٠أÙ
اÙÙ Ù
تÙÙØ¹Ø©. عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø¹ÙÙ Ø¹ÙØ³ اÙÙØ¸ÙÙØ© Ø§ÙØ¹Ø§Ø¯ÙØ© Ø ÙØ¬Ø¨ Ø£Ù ÙØªÙ
Ø§Ø³ØªØ¯Ø¹Ø§Ø¤ÙØ§ ب٠new:
```js run
class User {
constructor() {}
}
alert(typeof User); // function
User(); // Error: Class constructor User cannot be invoked without 'new'
```
Ø£ÙØ¶Ùا Ø ÙØ¨Ø¯Ø£ ت٠ثÙÙ Ø§ÙØ³ÙØ³ÙØ© ÙÙ ÙØ´Ø¦ ÙØ¦Ø© ÙÙ Ù Ø¹Ø¸Ù Ù ØØ±Ùات JavaScript ب٠âclass â¦â
```js run
class User {
constructor() {}
}
alert(User); // class User { ... }
```
ÙÙØ§Ù Ø§Ø®ØªÙØ§Ùات Ø£Ø®Ø±Ù Ø Ø³ÙØ±Ø§Ùا ÙØ±ÙØ¨ÙØ§.
- Ø¯ÙØ§Ù اÙclass ÙØ§ تعد ÙÙØ§ ØªØØµÙ.
    ÙÙÙÙ
تعرÙ٠اÙÙØ¦Ø© بتعÙÙÙ Ø¹ÙØ§Ù
Ø©
enumerableØ¥ÙÙfalseÙØ¬Ù ÙØ¹ Ø§ÙØ·Ø±Ù ÙÙ ââ prototype "`.
ÙØ°Ø§ أ٠ر Ø¬ÙØ¯ Ø ÙØ£Ù٠إذا ÙÙØ§ 'forâ¦in` ÙÙÙ ÙØ§Ø¦Ù ٠ا Ø ÙØ¥ÙÙØ§ عادة ÙØ§ ÙØ±Ùد طرÙÙ Ø§ÙØ·Ø¨ÙÙØ©.
- اÙclasses Ø¯Ø§Ø¦Ù ÙØ§ âØ§Ø³ØªØ®Ø¯Ø§Ù ØµØ§Ø±Ù â.     تÙÙÙ Ø¬Ù ÙØ¹ Ø§ÙØªØ¹ÙÙ٠ات Ø§ÙØ¨Ø±Ù Ø¬ÙØ© داخ٠بÙÙØ© اÙÙØµÙ تÙÙØ§Ø¦ÙÙØ§ ÙÙ ÙØ¶Ø¹ صار٠.
Ø¨Ø§ÙØ¥Ø¶Ø§ÙØ© Ø¥Ù٠ذÙÙ Ø ÙØ¥Ù Ø¨ÙØ§Ø¡ جÙ
ÙØ© class ÙØ¬Ùب Ø§ÙØ¹Ø¯Ùد Ù
٠اÙÙ
ÙØ²Ø§Øª Ø§ÙØ£Ø®Ø±Ù Ø§ÙØªÙ Ø³ÙØ³ØªÙØ´ÙÙØ§ ÙØ§ØÙÙØ§.
ØªØ¹Ø¨ÙØ± اÙclass
ØªÙ Ø§Ù ÙØ§ ٠ث٠functions Ø ÙÙ Ù٠تعرÙ٠اÙÙØ¦Ø§Øª Ø¯Ø§Ø®Ù ØªØ¹Ø¨ÙØ± آخر Ø ÙØªÙ Ø±ÙØ±Ùا Ø ÙØ¥Ø¹Ø§Ø¯ØªÙا Ø ÙØªØ¹ÙÙÙÙØ§ Ø Ù٠ا Ø¥Ù٠ذÙÙ.
Ø¥ÙÙÙ Ù Ø«Ø§ÙØ§Ù عÙÙ ØªØ¹Ø¨ÙØ± class:
let User = class {
sayHi() {
alert('Hello');
}
};
عÙ٠غرار ØªØ¹Ø¨ÙØ±Ø§Øª اÙÙØ¸Ø§Ø¦Ù اÙ٠س٠اة Ø ÙØ¯ ÙÙÙÙ ÙØªØ¹Ø¨Ùرات اÙÙØ¦Ø© اس٠.
إذا ÙØ§Ù ØªØ¹Ø¨ÙØ± ÙØ¦Ø© ÙÙ Ø§Ø³Ù Ø ÙØ¥ÙÙ ÙÙÙ٠٠رئÙÙØ§ داخ٠اÙÙØµÙ ÙÙØ·:
// "Named Class Expression"
// (no such term in the spec, but that's similar to Named Function Expression)
let User = class MyClass {
sayHi() {
alert(MyClass); // MyClass name is visible only inside the class
}
};
new User().sayHi(); // works, shows MyClass definition
alert(MyClass); // error, MyClass name isn't visible outside of the class
ÙÙ ÙÙÙØ§ Ø£ÙØ¶Ùا Ø£Ù ÙØ¬Ø¹Ù classes دÙÙØ§Ù ÙÙÙÙØ§ âØØ³Ø¨ Ø§ÙØ·ÙØ¨â Ø Ù Ø«Ù ÙØ°Ø§:
function makeClass(phrase) {
// declare a class and return it
return class {
sayHi() {
alert(phrase);
}
};
}
// Create a new class
let User = makeClass('Hello');
new User().sayHi(); // Hello
Getters/setters
ØªÙ Ø§Ù ÙØ§ Ù Ø«Ù Ø§ÙØ£Ø´Ùاء Ø§ÙØØ±ÙÙØ© Ø ÙØ¯ تتض٠٠اÙÙØ¦Ø§Øª Ø§ÙØØ±ÙÙ / اÙÙ Ø³ØªÙØ·ÙÙÙ ÙØ§Ùخصائص اÙÙ ØØ³Ùبة Ù٠ا Ø¥Ù٠ذÙÙ.
ÙÙ Ù
ا ÙÙÙ Ù
ثا٠ÙÙ user.name تÙ
تÙÙÙØ°Ù باستخداÙ
get / set:
class User {
constructor(name) {
// invokes the setter
this.name = name;
}
get name() {
return this._name;
}
set name(value) {
if (value.length < 4) {
alert("Name is too short.");
return;
}
this._name = value;
}
}
let user = new User("John");
alert(user.name); // John
user = new User(""); // Name is too short.
Ù
٠اÙÙØ§ØÙØ© اÙÙÙÙØ© Ø ÙØ¹Ù
Ù Ø¥Ø¹ÙØ§Ù اÙÙØ¦Ø© ÙØ°Ø§ ع٠طرÙÙ Ø¥ÙØ´Ø§Ø¡ Ø§ÙØØ±ÙÙ ÙØ§ÙÙ
Ø³ØªÙØ·ÙÙÙ ÙÙ User.prototype.
Ø§ÙØ£Ø³Ù اء اÙÙ ØØ³Ùبة [â¦]
ÙÙ Ù
ا ÙÙÙ Ù
ثا٠باسÙ
Ø§ÙØ·Ø±ÙÙØ© اÙÙ
ØØ³Ùبة باستخداÙ
Ø§ÙØ£ÙÙØ§Ø³ [...]:
class User {
['say' + 'Hi']() {
alert("Hello");
}
}
new User().sayHi();
Ù Ù Ø§ÙØ³ÙÙ ØªØ°ÙØ± ÙØ°Ù اÙÙ ÙØ²Ø§Øª Ø ÙØ£ÙÙØ§ تشب٠تÙ٠اÙÙ ÙØ¬Ùدة ÙÙ Ø§ÙØ£Ø´Ùاء Ø§ÙØØ±ÙÙØ©.
ØÙÙÙ class
تعد ØÙÙÙ Ø§ÙØµÙ Ø¥Ø¶Ø§ÙØ© ØØ¯Ùثة ÙÙØºØ©.
ÙÙ Ø§ÙØ³Ø§Ø¨Ù Ø ÙØ§Ùت ÙØµÙÙÙØ§ ت٠تÙ٠طرÙÙØ§ ÙÙØ·.
âØÙÙÙ classâ Ù٠بÙÙØ© ØªØ³Ù Ø Ø¨Ø¥Ø¶Ø§ÙØ© أ٠خصائص.
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø¯Ø¹ÙØ§ ÙØ¶ÙÙ Ø®Ø§ØµÙØ© name Ø¥ÙÙclass User:
class User {
name = "John";
sayHi() {
alert(`Hello, ${this.name}!`);
}
}
new User().sayHi(); // Hello, John!
ÙØ°ÙÙ Ø ÙÙØªØ¨ ÙÙØ· â<Ø§Ø³Ù Ø§ÙØ®Ø§ØµÙØ©> = <ÙÙÙ Ø©>â ÙÙ Ø§ÙØ¥Ø¹ÙØ§Ù Ø ÙÙØ°Ø§ ÙÙ Ø´ÙØ¡.
Ø§ÙØ§Ø®ØªÙا٠اÙÙ
ÙÙ
ÙÙ ØÙÙÙ Ø§ÙØµÙ Ù٠أÙÙ ÙØªÙ
تعÙÙÙÙØ§ عÙÙ ÙØ§Ø¦Ùات ÙØ±Ø¯ÙØ© Ø ÙÙÙØ³ User.prototype:
class User {
name = "John";
}
let user = new User();
alert(user.name); // John
alert(User.prototype.name); // undefined
٠٠اÙÙØ§ØÙØ© اÙÙÙÙØ© Ø ØªØªÙ Ù Ø¹Ø§ÙØ¬ØªÙا بعد Ø£Ù ÙÙÙ٠اÙÙ ÙØ´Ø¦ بع٠ÙÙ Ø ÙÙÙ ÙÙÙØ§ استخدا٠٠باÙÙØ³Ø¨Ø© ÙÙÙ Ø§ÙØªØ¹Ø¨Ùرات اÙÙ Ø¹ÙØ¯Ø© ÙØ§Ø³ØªØ¯Ø¹Ø§Ø¡Ø§Øª اÙÙØ¸Ø§Ø¦Ù:
class User {
name = prompt("Name, please?", "John");
}
let user = new User();
alert(user.name); // John
ع٠٠طر٠٠رتبطة بØÙÙÙ class
ÙÙ
ا ÙÙ Ù
ÙØ¶Ø Ù٠اÙÙØµÙ <info: bind> Ø ÙØ¥Ù ÙØ¸Ø§Ø¦Ù JavaScript ÙÙØ§ دÙÙØ§Ù
ÙÙÙØ© this. ÙØ¹ØªÙ
د ذÙ٠عÙÙ Ø³ÙØ§Ù اÙÙ
ÙØ§ÙÙ
Ø©.
ÙØ°Ù٠إذا تÙ
تÙ
Ø±ÙØ± طرÙÙØ© ÙØ§Ø¦Ù ÙØ§Ø³ØªØ¯Ø¹Ø§Ø¤Ùا ÙÙ Ø³ÙØ§Ù آخر Ø ÙÙÙ ÙÙÙÙ ÙØ°Ø§ Ù
رجعا٠إÙÙ ÙØ§Ø¦Ù٠بعد Ø§ÙØ¢Ù.
عÙ٠سبÙ٠اÙÙ
Ø«Ø§Ù Ø Ø³ÙÙØ¸Ùر ÙØ°Ø§ Ø§ÙØ±Ù
ز undefined:
class Button {
constructor(value) {
this.value = value;
}
click() {
alert(this.value);
}
}
let button = new Button("hello");
setTimeout(button.click, 1000); // undefined
تس٠٠اÙÙ Ø´ÙÙØ© âÙÙØ¯Ø§Ùâ this ââ.
ÙÙØ§Ù طرÙÙØªØ§Ù ÙØ¥ØµÙاØÙا Ø Ù٠ا ÙÙ Ù ÙØ¶Ø Ù٠اÙÙØµÙ <info: bind>:
- ÙÙ
بتÙ
Ø±ÙØ± Ø¯Ø§ÙØ© Ù
جÙ
عة Ø Ù
Ø«Ù
setTimeout (() => button.click ()Ø 1000). - ربط طرÙÙØ© Ø§ÙØ§Ø¹ØªØ±Ø§Ø¶ Ø Ø¹Ù٠سبÙ٠اÙ٠ثا٠Ù٠اÙÙ ÙØ´Ø¦:
تÙÙØ± ØÙÙÙ class بÙÙØ© Ø£ÙØ«Ø± Ø£ÙØ§ÙØ© ÙÙØÙ Ø§ÙØ£Ø®Ùر:
class Button {
constructor(value) {
this.value = value;
}
click = () => {
alert(this.value);
}
}
let button = new Button("hello");
setTimeout(button.click, 1000); // hello
ÙÙØ´Ø¦ ØÙ٠اÙÙØ¦Ø© click = () => {...} ÙØ¸ÙÙØ© Ù
ستÙÙØ© عÙÙ ÙÙ ÙØ§Ø¦Ù Button Ø Ù
عthis Ù
Ø±ØªØ¨Ø·ÙØ§ باÙÙØ§Ø¦Ù. Ø«Ù
ÙÙ
ÙÙÙØ§ تÙ
Ø±ÙØ± âbutton.clickâ Ù٠أ٠Ù
ÙØ§Ù Ø ÙØ³ÙتÙ
Ø§Ø³ØªØ¯Ø¹Ø§Ø¤ÙØ§ باستخداÙ
this Ø§ÙØµØÙØ.
ÙØ°Ø§ Ù ÙÙØ¯ بشÙ٠خاص ÙÙ Ø¨ÙØ¦Ø© اÙÙ ØªØµÙØ Ø Ø¹ÙØ¯Ù ا ÙØØªØ§Ø¬ Ø¥Ù٠إعداد طرÙÙØ© Ù٠ست٠ع ÙÙØ£ØØ¯Ø§Ø«.
Ù ÙØ®Øµ
تبد٠بÙÙØ© Ø§ÙØµÙ Ø§ÙØ£Ø³Ø§Ø³ÙØ© Ù٠ا ÙÙÙ:
class MyClass {
prop = value; // property
constructor(...) { // constructor
// ...
}
method(...) {} // method
get something(...) {} // getter method
set something(...) {} // setter method
[Symbol.iterator]() {} // method with computed name (symbol here)
// ...
}
MyClass ÙÙ ÙØ¸ÙÙØ© Ù
٠اÙÙØ§ØÙØ© اÙÙÙÙØ© (تÙÙ Ø§ÙØªÙ ÙÙØ¯Ù
ÙØ§ عÙ٠أÙÙØ§ Ù
ÙÙØ´Ø¦) Ø Ø¨ÙÙÙ
ا تتÙ
ÙØªØ§Ø¨Ø© Ø§ÙØ£Ø³Ø§ÙÙØ¨ ÙØ§ÙرسÙÙ
ات ÙØ§ÙÙ
Ø³ØªÙØ·ÙÙ٠عÙÙMyClass.prototype.
Ù٠اÙÙØµÙÙ Ø§ÙØªØ§ÙÙØ© Ø³ÙØªØ¹Ù٠اÙÙ Ø²ÙØ¯ ع٠اÙÙØµÙÙ Ø Ø¨Ù Ø§ Ù٠ذÙ٠اÙÙ ÙØ±Ø§Ø« ÙØ§ÙÙ ÙØ²Ø§Øª Ø§ÙØ£Ø®Ø±Ù.
Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)