Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update article.md #314

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions 1-js/08-prototypes/01-prototype-inheritance/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ _الوراثة النموذجية_ (تدعى أيضًا الوراثة عبر

لكائنات جافا سكريبت خاصية مخفية أخرى باسم `[[Prototype]]` (هذا اسمها في المواصفات القياسية للغة جافا سكريبت)، وهي إمّا أن تكون `null` أو أن تشير إلى كائن آخر. نسمّي هذا الكائن بِـ”prototype“ (نموذج أولي).

When we read a property from `object`, and it's missing, JavaScript automatically takes it from the prototype. In programming, such thing is called "prototypal inheritance". And soon we'll study many examples of such inheritance, as well as cooler language features built upon it.
عند قراءة خاصية من `كائن` وتعذر وجودها، يقوم JavaScript تلقائيًا بأخذها من النموذج الأصلي. في البرمجة، يُطلق على مثل هذا الأمر "الوراثة النمطية". وقريبًا سندرس العديد من الأمثلة على هذه الوراثة، بالإضافة إلى ميزات لغوية أكثر إثارة تستند عليها.
Kr-Abdou marked this conversation as resolved.
Show resolved Hide resolved

إن كائن النموذج الأولي ”سحريٌ“ إن صحّ القول، فحين نريد قراءة خاصية من كائن `object` ولا يجدها محرّك جافا سكريبت، يأخذها تلقائيًا من كائن النموذج الأولي لذاك الكائن. يُسمّى هذا في علم البرمجة ”بالوراثة النموذجية“ (‏Prototypal inheritance)، وهناك العديد من المزايا الرائعة في اللغة وفي التقنيات البرمجية مبنية عليها.

Expand All @@ -31,8 +31,7 @@ rabbit.__proto__ = animal; // sets rabbit.[[Prototype]] = animal
*/!*
```

Now if we read a property from `rabbit`, and it's missing, JavaScript will automatically take it from `animal`.

الآن إذا قرأنا خاصية من `rabbit`، ولم تكن موجودة، سيقوم JavaScript تلقائيًا بأخذها من `animal`.
Kr-Abdou marked this conversation as resolved.
Show resolved Hide resolved
```js
let animal = {
eats: true
Expand Down Expand Up @@ -120,9 +119,9 @@ alert(longEar.jumps); // true (from rabbit)

![](proto-animal-rabbit-chain.svg)

Now if we read something from `longEar`, and it's missing, JavaScript will look for it in `rabbit`, and then in `animal`.
الآن إذا قرأنا شيئًا من `longEar`، ولم يتم العثور عليه، سيبحث JavaScript عنه أولاً في `rabbit`، ثم في `animal`.
Kr-Abdou marked this conversation as resolved.
Show resolved Hide resolved

There are only two limitations:
هناك فقط حدْان:

ومن الواضح جليًا أيضًا أي كائن سيرث كائن `[[Prototype]]` واحد وواحد فقط، لا يمكن للكائن وراثة كائنين.

Expand Down