Skip to content

Commit 9328c0c

Browse files
authored
docs: improve translation
1 parent 706f2a1 commit 9328c0c

1 file changed

Lines changed: 18 additions & 30 deletions

File tree

  • 1-js/04-object-basics/06-constructor-new

1-js/04-object-basics/06-constructor-new/article.md

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ isAdmin: false
4444
};
4545
```
4646
الآن، إن أردنا إنشاء مستخدمين آخرين، يمكننا استدعاء `new User("Ann")‎`، و `new User("Alice‎")‎` وهكذا. تعدُّ هذه
47-
الطريقة في بناء الكائنات أقصر من الطريقة الاعتيادية عبر الأقواس فقط، وأيضًا أسهل للقراءة. هذا هو الغرض الرئيسي للبانيات،
47+
الطريقة في بناء الكائنات أقصر من الطريقة الاعتيادية عبر الأقواس فقط، وأيضًا أسهل للقراءة. هذا هو الغرض الرئيس للبانيات،
4848
وهي تطبيق شيفرة قابلة لإعادة الاستخدام لإنشاء الكائنات.
4949
لاحظ أنَّه يمكن استخدام أي دالة لتكون دالة بانية تقنيًا. يعني أنه يمكن تنفيذ أي دالة مع `new`، وستُنَفَّذ باستخدام الخوارزمية أعلاه.
5050
استخدام الأحرف الكبيرة في البداية هو اتفاق شائع لتمييز الدالة البانية من غيرها وأنَّه يجب استدعاؤها مع `new`.
@@ -60,12 +60,10 @@ this.isAdmin = false;
6060
// متغيرات محلية وهكذا..
6161
};
6262
```
63-
لا يمكن استدعاء المُنشِئ مجددًا، لأنه غير محفوظ في أي مكان، يُنشَأ ويُستدعى فقط. لذا فإن الخدعة تهدف لتضمين الشيفرة التي
64-
تُنشِئ كائنًا واحدًا، دون إعادة الاستخدام وتكرار العملية مستقبلًا.
63+
لا يمكن استدعاء المُنشِئ مجددًا، لأنه غير محفوظ في أي مكان، يُنشَأ ويُستدعى فقط. لذا فإن الخدعة تهدف إلى تضمين الشيفرة التي تُنشِئ كائنًا واحدًا، دون إعادة الاستخدام وتكرار العملية مستقبلًا.
6564
## وضع اختبار الباني: `new.target`
6665
**ميزة متقدمة**: تُستخدم الصيغة في هذا الجزء نادرًا، ويمكنك تخطيها إلا إن كنت تُريد الإلمام بكل شيء.
67-
يمكننا فحص ما إن كانت الدالة قد استدعيت باستخدام `new` أو دونه من داخل الدالة، وذلك باستخدام الخاصية الخاصة
68-
`new.target`.
66+
يمكننا فحص ما إن كانت الدالة قد استدعيت باستخدام `new` أو دونه من داخل الدالة، وذلك باستخدام الخاصية الخاصة `new.target`.
6967
تكون الخاصية فارغة في الاستدعاءات العادية، وتساوي الدالة البانية إذا استُدعِيَت باستخدام `new`:
7068

7169
```
@@ -78,8 +76,8 @@ User(); // undefined
7876
new User(); // function User { ... }
7977
```
8078

81-
يمكن استخدام ذلك بداخل الدالة لمعرفة إن استُدعِيَت مع `new`، "في وضع بناء كائن"، أو بدونه "في الوضع العادي".
82-
يمكننا أيضًا جعل كلًا من الاستدعاء العادي و `new` ينفِّذان الأمر ذاته -بناء كائن- هكذا:
79+
يمكن استخدام ذلك بداخل الدالة لمعرفة إن استُدعِيَت مع `new`، "في وضع بناء كائن"، أو دونه "في الوضع العادي".
80+
يمكننا أيضًا جعل كلًا من الاستدعاء العادي و`new` ينفِّذان الأمر ذاته -بناء كائن- هكذا:
8381

8482
```
8583
function User(name) {
@@ -91,17 +89,13 @@ this.name = name;
9189
let john = User("John"); // new User تُوَجِّه الاستدعاء إلى
9290
alert(john.name); // John
9391
```
94-
يستخدم هذا الاسلوب في بعض المكتبات أحيانًا لجعل الصيغة أكثر مرونة حتى يتمكن الأشخاص من استدعاء الدالة مع `new` أو
95-
بدونه، وتظل تعمل.
96-
ربما ليس من الجيد استخدام ذلك في كل مكان، لأن حذف `new` يجعل ما يحدث أقل وضوحًا. لكن مع `new`، يعلم الجميع أن
97-
كائنًا جديدًا قد أُنشِئ.
92+
يستخدم هذا الأسلوب في بعض المكتبات أحيانًا لجعل الصيغة أكثر مرونة حتى يتمكن الأشخاص من استدعاء الدالة مع `new` أو دونه، وتظل تعمل.
93+
ربما ليس من الجيد استخدام ذلك في كل مكان، لأن حذف `new` يجعل ما يحدث أقل وضوحًا. لكن مع `new`، يعلم الجميع أن كائنًا جديدًا قد أُنشِئ.
9894
## ما تُرجِعه الدوال البانية
99-
لا تملك الدوال البانية عادةً التعليمة `return`. فَمُهِمَتُهَا هي كتابة الأمور المهمة إلى `this`، وتصبح تلقائيًا هي النتيجة. لكن إن
100-
كان هناك التعليمة `return` فإن القاعدة بسيطة:
95+
لا تملك الدوال البانية عادةً التعليمة `return`. فَمُهِمَتُهَا هي كتابة الأمور المهمة إلى `this`، وتصبح تلقائيًا هي النتيجة. لكن إن كان هناك التعليمة `return` فإن القاعدة سهلة:
10196
- إن استُدعِيَت `return` مع كائن، يُرجَع الكائن بدلًا من `this`.
10297
- إن استُدعِيَت `return` مع متغير أولي، يُتَجاهَل.
103-
بمعنىً آخر، `return` مع كائن يُرجَع الكائن، وفي الحالات الأخرى تُرجَع `this`. مثلًا، يعاد في المثال التالي الكائن المرفق بعد
104-
`return` ويهمل الكائن المسنَد إلى `this`:
98+
بمعنىً آخر، `return` مع كائن يُرجَع الكائن، وفي الحالات الأخرى تُرجَع `this`. مثلًا، يعاد في المثال التالي الكائن المرفق بعد `return` ويهمل الكائن المسنَد إلى `this`:
10599

106100
```
107101
function BigUser() {
@@ -121,9 +115,8 @@ return; // ← this تُرجِع
121115
}
122116
alert( new SmallUser().name ); // John
123117
```
124-
لا تحوي الدوال البانية غالبًا على تعليمة الإعادة `return`. نذكر هنا هذا التصرف الخاص عند إرجاع الكائنات بغرض شمول
125-
جميع النواحي.
126-
### **حذف الاقواس**
118+
لا تحتوي الدوال البانية غالبًا على تعليمة الإعادة `return`. نذكر هنا هذا التصرف الخاص عند إرجاع الكائنات بغرض شمول جميع النواحي.
119+
### **حذف الأقواس**
127120
بالمناسبة، يمكننا حذف أقواس `new` في حال غياب المعاملات مُعامِلات:
128121

129122
```
@@ -134,9 +127,7 @@ let user = new User();
134127

135128
لا يُعد حذف الأقواس أسلوبًا جيدَا، لكن الصيغة مسموح بها من خلال المواصفات.
136129
## الدوال في الباني
137-
استخدام الدوال البانية لإنشاء الكائنات يُعطي مرونة كبيرة. قد تحوي الدالة البانية على مُعامِلات ترشد في بناء الكائن ووضعه، إذ
138-
يمكننا إضافة خاصيات ودوال إلى `this` بالطبع. مثلًا، تُنشِئ `new User(name)‎` في الأسفل كائنًا بالاسم المُعطَى `name`
139-
والدالة `sayHi`:
130+
استخدام الدوال البانية لإنشاء الكائنات يُعطي مرونة كبيرة. قد تحتوي الدالة البانية على مُعامِلات ترشد في بناء الكائن ووضعه، إذ يمكننا إضافة خاصيات ودوال إلى `this` بالطبع. مثلًا، تُنشِئ `new User(name)‎` في الأسفل كائنًا بالاسم المُعطَى `name` والدالة `sayHi`:
140131

141132
```
142133
function User(name) {
@@ -159,14 +150,11 @@ sayHi: function() { ... }
159150
لإنشاء كائنات أكثر تعقيدًا، يوجد صيغة أكثر تقدمًا، الفئات، والتي سنغطيها لاحقًا.
160151
## الخلاصة
161152
- الدوال البانية، أو باختصار البانيات، هي دوال عادية، لكن يوجد اتفاق متعارف عليه ببدء اسمها بحرف كبير.
162-
- يجب استدعاء الدوال البانية باستخدام `new` فقط. يتضمن هذا الاستدعاء إنشاء كائن فارغ وإسناده إلى `this` وبدء العملية ثم
163-
إرجاع هذا الكائن في نهاية المطاف.
164-
يمكننا استخدام الدوال البانية لإنشاء كائنات متعددة متشابهة.
165-
تزود JavaScript دوالًا بانية للعديد من الأنواع (الكائنات) المدمجة في اللغة: مثل النوع `Date` للتواريخ، و `Set`
166-
للمجموعات وغيرها من الكائنات التي نخطط لدراستها.
153+
- يجب استدعاء الدوال البانية باستخدام `new` فقط. يتضمن هذا الاستدعاء إنشاء كائن فارغ وإسناده إلى `this` وبدء العملية ثم إرجاع هذا الكائن في نهاية المطاف.
154+
- يمكننا استخدام الدوال البانية لإنشاء كائنات متعددة متشابهة.
155+
- تزود JavaScript دوالًا بانية للعديد من الأنواع (الكائنات) المدمجة في اللغة: مثل النوع `Date` للتواريخ، و `Set` للمجموعات وغيرها من الكائنات التي نخطط لدراستها.
167156
### **عودة قريبة**
168-
غطينا الأساسيات فقط عن الكائنات وبانياتها في هذا الفصل. هذه الأساسيات مهمة تمهيدًا لتعلم المزيد عن أنواع البيانات والدوال في
169-
الفصل التالي.
157+
غطينا الأساسيات فقط عن الكائنات وبانياتها في هذا الفصل. هذه الأساسيات مهمة تمهيدًا لتعلم المزيد عن أنواع البيانات والدوال في الفصل التالي.
170158
بعد تعلم ذلك، سنعود للكائنات ونغطيها بعمق في فصل الخصائص، والوراثة، والأصناف.
171159
## تمارين
172160
### دالتين - كائن واحد
@@ -231,7 +219,7 @@ alert( "Mul=" + calculator.mul() );
231219

232220
## إنشاء مجمِّع
233221
الأهمية: 5
234-
انشِئ دالة بانية باسم `Accumulator(startingValue)‎`، إذ يجب أن يتصف هذا الكائن بأنَّه:
222+
أنشِئ دالة بانية باسم `Accumulator(startingValue)‎`، إذ يجب أن يتصف هذا الكائن بأنَّه:
235223
- يخزن القيمة الحالية في الخاصية `value`. تُعَيَّن قيمة البدء عبر المعامل `startingValue` المعطى من الدالة البانية.
236224
- يجب أن تستخدم الدالة `read()` الدالة `prompt` لقراءة رقم جديد وإضافته إلى `value`.
237225
بمعنى آخر، الخاصية `value` هي مجموع القيم المدخلة بواسطة المستخدم بالإضافة إلى القيمة الأولية `startingValue`.
@@ -259,4 +247,4 @@ accumulator.read();
259247
alert(accumulator.value);
260248
```
261249
ترجمة -وبتصرف- للفصل [Constructor, operator "new"](https://javascript.info/constructor-new) من
262-
كتاب [The JavaScript Language](https://javascript.info/js)
250+
كتاب [The JavaScript Language](https://javascript.info/js)

0 commit comments

Comments
 (0)